2015-08-22 115 views
4

我有一个要求以升序排序ArrayList<Object>(自定义对象)基于名称。为了这个目的,我用比较法像如何排序ArrayList <Object>按升序排序android

我的ArrayList:我使用

ArrayList<Model> modelList = new ArrayList<Model>();

代码:

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<Object>。请帮我解决一下这个。任何帮助和解决方案都会对我有所帮助。我张贴我的确切场景供您参考。提前致谢。

实施例:

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 
+2

输出似乎是相同的输出需求。那么究竟是什么问题呢? – Mureinik

+0

我不太明白这个问题。什么不工作? – yshavit

+0

我需要指定ArrayList中的排序数组 Chandru

回答

26

你的做法是正确的。让你的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 
+0

谢谢。它像魅力一样工作。我接受你的回答 – Chandru

+0

你可以告诉降序 – Prasad

+1

@Prasad更改'lhs'和'rhs'职位。 –

1
Collections.sort(actorsList, new Comparator<Actors>() { 
     @Override 
     public int compare(Actors lhs, Actors rhs) { 
     return lhs.getName().compareTo(rhs.getName()); 
    } 
    });`enter code here` 
+0

此代码工作正常,我将使用此代码....此代码工作在字符串&也是整数值 –