【问题标题】:How to sort ArrayList<Object> in Ascending order android如何按升序对 ArrayList<Object> 进行排序 android
【发布时间】:2015-11-16 14:29:52
【问题描述】:

我需要根据名称按升序对ArrayList&lt;Object&gt;(自定义对象)进行排序。为此,我正在使用比较器方法

我的数组列表:

ArrayList&lt;Model&gt; modelList = new ArrayList&lt;Model&gt;();

我正在使用的代码:

   Comparator<Model> comparator = new Comparator<Model>() {
            @Override
            public int compare(CarsModel lhs, CarsModel rhs) {

                String  left = lhs.getName();
                String right = rhs.getName();

                return left.compareTo(right);

            }
        };

   ArrayList<Model> sortedModel = Collections.sort(modelList,comparator);

//While I try to fetch the sorted ArrayList, I am getting error message 

我完全被困住了,真的不知道如何进一步获得ArrayList&lt;Object&gt; 的排序列表。请帮我解决一下这个。任何帮助和解决方案都会对我有所帮助。我发布了我的确切情况供您参考。提前致谢。

示例:

ArrayList<Model> modelList = new ArrayList<Model>();
modelList.add(new Model("chandru"));
modelList.add(new Model("mani"));
modelList.add(new Model("vivek"));
modelList.add(new Model("david"));

普通列表:

for(Model mod : modelList){
  Log.i("names", mod.getName());
}

输出:

chandru
mani
vivek
david

排序后我的要求是这样的:

for(Model mod : modelList){
  Log.i("names", mod.getName());
}

输出:

chandru
david
mani
vivek

【问题讨论】:

  • 输出似乎与需求中的输出相同。那么究竟是什么问题呢?
  • 我不太明白这个问题。什么不工作?
  • 我需要在 ArrayList 中分配排序后的数组
  • 你能解释一下错误吗?你的代码的输出是什么?
  • 我收到不兼容的类型错误。

标签: java android sorting arraylist collections


【解决方案1】:

你的方法是对的。像下面的例子一样让你的Comparator 内部(或者你可以创建一个新类):

ArrayList<Model> modelList = new ArrayList<>();
modelList.add(new Model("chandru"));
modelList.add(new Model("mani"));
modelList.add(new Model("vivek"));
modelList.add(new Model("david"));

Collections.sort(modelList, new Comparator<Model>() {
    @Override
    public int compare(Model lhs, Model rhs) {
        return lhs.getName().compareTo(rhs.getName());
    }
});

输出

chandru
david
mani
vivek

【讨论】:

  • 你能告诉我降序吗
  • @Prasad 更改 lhsrhs 职位。
  • 非常感谢您的解决方案,它运行良好,节省了我很多时间!
【解决方案2】:
 Collections.sort(actorsList, new Comparator<Actors>() {
      @Override
      public int compare(Actors lhs, Actors rhs) {
       return lhs.getName().compareTo(rhs.getName());
     }
    });

【讨论】:

  • 这段代码工作正常我将使用这段代码....这段代码在字符串和整数值中工作
【解决方案3】:
Collections.sort(modelList, (lhs, rhs) -> lhs.getName().compareTo(rhs.getName()));

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 2013-09-10
    • 2013-04-17
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多