2016-03-29 82 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)' –

相关问题