2016-03-29 133 views
-4

我有以下類。根據用戶輸入對java中的arrayList進行排序

class{ 
     String name; 
     int marks; 
}; 

現在我必須根據用戶輸入按字母順序(名稱)或降序(標記)排序對象。 如何爲此編寫比較器功能。 用戶將輸入'n'使用名稱排序,'m'使用標記排序。

+3

你有什麼迄今所做? – Rehman

+0

要麼將​​用戶輸入傳遞給比較器,要麼根據用戶輸入選擇一個比較器(可能是更好的方法)。 – Thomas

+0

我是Java新手,剛剛學習了ArrayList,所以我不確定如何開始。 – Souvik

回答

1

創建兩個Comparator<>一個另一個用於標記,並根據您的用戶輸入選擇一個,並執行以下。

Collections.sort(yourList, yourComparator); 

sort(List<T> list, Comparator<? super T> c))

public class YourFirstComparator implements Comparator<YourClass> { 
    @Override 
    public int compare(YourClass o1, YourClass o2) { 
     // your logic to return 
     // -1 if o1 is small, 1 is o1 is greater, 0 if both are equals 
     return yourValue 

    } 
} 
+0

這些比較器的外觀如何? –

+0

@SashaSalauyou看到更新的答案 –

+0

我的意思是說,在OP類中有'name'和'makrs'變量,所以它們可能只是'Comparator.comparing(e - > e.name)'和'Comparator.comparing (e - > - e.marks)' –

相關問題