原文:https://www.journaldev.com/787/java–sort–list
有时我们必须在Java中对列表进行排序,然后再处理其元素。在本教程中,我们将学习如何对列表进行排序。我们还将学习如何使用我们自己的Comparator实现对对列列表进行排序。
Java List与数组相似,不同之处在于列表的长度是动态的,并且来自于Java Collection框架。实际上,List是一个接口,大多数情况下我们会用ArrayList或LinkedList等来实现。
Java Sort List
在这里,我们将学习如何对Java对象列表进行排序。我们用Collections.sort()对列表进行递增排序。列表中的所有元素必须实现Comparable接口,否则抛出IllegalArgumentException。
让我们看一个简单的示例,对字符串列表进行排序。
package com.journaldev.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class JavaListSort {
/**
* This class shows how to sort ArrayList in java
* @param args
*/
public static void main(String[] args) {
List strList = new ArrayList();
strList.add("A");
strList.add("C");
strList.add("B");
strList.add("Z");
strList.add("E");
//using Collections.sort() to sort ArrayList
Collections.sort(strList);
for(String str: strList) System.out.print(" "+str);
}
}
正如您所见,我们正在用Collections.sort()方法对字符串列表进行排序。String类实现了Comparable接口。
输出:
Java Sort List of Objects
让我们看另一个示例,在该示例中我们将对自定义的对象列表进行排序。注意该类必须实现Comparable接口。
package com.journaldev.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class JavaSortListObject {
public static void main(String[] args) {
List dl = new ArrayList<>();
dl.add(new Data(2));
dl.add(new Data(3));
dl.add(new Data(1));
System.out.println("Original List::"+dl);
Collections.sort(dl);
System.out.println("Naturally Sorted List::"+dl);
}
}
class Data implements Comparable {
private int id;
public Data(int i) {
this.id = i;
}
@Override
public int compareTo(Data d) {
return this.id - d.getId();
}
public int getId() {
return id;
}
@Override
public String toString() {
return "Data{"+this.id+"}";
}
}
输出:
Original List::[Data{2}, Data{3}, Data{1}]
Naturally Sorted List::[Data{1}, Data{2}, Data{3}]
Sort a List in Java using Comparator
Collections.sort()方法是overloaded,我们也可以实现自己的Comparator按自定义排序规则。
由于Comparator是功能性接口,我们可以用一行lambda表达式来实现。
Collections.sort(dl, (d1, d2) -> {
return d2.getId() - d1.getId();
});
System.out.println("Reverse Sorted List using Comparator::" + dl);
Summary
集合类的sort()方法用于对Java中的列表进行排列。我们可以对列表进行排序,其中列表中的元素必须实现Comparable接口。我们还可以通过Comparator来定义排序规则。
程序员灯塔
转载请注明原文链接:Java中如何对List排序