2015-08-22 140 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

此代碼工作正常,我將使用此代碼....此代碼工作在字符串&也是整數值 –