java的list集合如何根據物件中的某個欄位排序
阿新 • • 發佈:2018-12-01
集合提供了一個工具類:java.util.Collections
集合的工具類提供了若干靜態方法,可以方便我們隊集合做一系列操作,其中之一就是排序
需要注意,提供的方法只能對List集合排序,因為Set集合不全是有序的。
但是如果要求根據集合中某個元素的值排序,該如何進行呢?
程式碼演示
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("abc");
list .add("abcd");
list.add("abcde");
System.out.println(list);
Collections.sort(list, new Comparator<String>(){
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}});
System.out.println(list);
}
此段程式碼將根據字串長度從短到長排序。
單獨將此程式碼取出
Collections.sort(list, new Comparator<String>(){
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}});
Collection提供了一個過載的sort方法,可以允許傳入一個額外的比較器
按照該比較器的規則對元素比較大小後進行排序。
1.排序方式可以自定,更靈活
2.不要求元素必須實現Comparable介面,沒有侵入性
更多例子:比如在對員工集合進行整理時,要對員工工資進行排序,也可以使用此方法
只需將compare中引數,返回值進行修改即可。
public int compare(Emp o1, Emp o2) {
return o1.getSalary()-o2.getSalary();
}
根據工資升序排序。