一、直接使用Collections.sort()方法进行排序
首先介绍使用Java自带的Collections.sort()方法来对List进行排序的方式,这是一种非常方便快捷的方法。下面是示例代码:
List list = new ArrayList
();
list.add("apple");
list.add("orange");
list.add("banana");
Collections.sort(list);
System.out.println(list);
上面的代码会输出一个已按字母顺序排序的List,即["apple", "banana", "orange"]。这里我们使用的是默认的升序排序方式,如果想要进行降序排序的话,可以通过在调用sort()方法时传入Comparator对象来实现,如下所示:
List list = new ArrayList
();
list.add("apple");
list.add("orange");
list.add("banana");
Comparator
comparator = Collections.reverseOrder();//获取倒序排列的Comparator对象
Collections.sort(list, comparator);
System.out.println(list);
这里的输出结果为["orange", "banana", "apple"],即已按照字母倒序排列。
二、实现Comparable接口来排序
除了使用Collections.sort()方法来排序,还有一种方式是实现Comparable接口来排序。Comparable接口只有一个compareTo()方法,如果一个类实现了该接口,就可以使用Collections.sort()方法进行排序。下面是示例代码:
public class Fruit implements Comparable{
private String name;
private int price;
public Fruit(String name, int price){
this.name = name;
this.price = price;
}
@Override
public int compareTo(Fruit o) {
//根据价格升序排序
return this.price - o.price;
}
@Override
public String toString() {
return this.name + ":" + this.price;
}
}
List
list = new ArrayList
();
list.add(new Fruit("apple", 5));
list.add(new Fruit("banana", 3));
list.add(new Fruit("orange", 4));
Collections.sort(list);
System.out.println(list);
输出的结果为[banana:3, orange:4, apple:5],即按照水果的价格进行了升序排列。如果要进行降序排列,只需要在compareTo()方法中将返回值改为o.price - this.price即可。
三、使用lambda表达式进行排序
在Java 8中,我们还可以使用lambda表达式来进行排序。下面是示例代码:
List list = new ArrayList
();
list.add(new Fruit("apple", 5));
list.add(new Fruit("banana", 3));
list.add(new Fruit("orange", 4));
list.sort((o1, o2) -> o1.getPrice() - o2.getPrice());//根据价格升序排序
System.out.println(list);
这里我们通过调用List的sort()方法,并传入一个lambda表达式,来对List集合进行排序。输出结果为[banana:3, orange:4, apple:5],也是按照水果价格进行了升序排列。
四、多重排序
除了单一属性排序以外,我们还可以进行多重属性排序,即按照多个属性进行排序。下面是示例代码:
public class Fruit implements Comparable{
private String name;
private int price;
private int quantity;
public Fruit(String name, int price, int quantity){
this.name = name;
this.price = price;
this.quantity = quantity;
}
@Override
public int compareTo(Fruit o) {
//先根据价格升序排序,价格相同则根据数量升序排序
if(this.price == o.price){
return this.quantity - o.quantity;
}
return this.price - o.price;
}
@Override
public String toString() {
return this.name + ":" + this.price + ":" + this.quantity;
}
}
List
list = new ArrayList
();
list.add(new Fruit("apple", 5, 2));
list.add(new Fruit("banana", 3, 1));
list.add(new Fruit("orange", 4, 3));
Collections.sort(list);
System.out.println(list);
输出结果为[banana:3:1, orange:4:3, apple:5:2],即先按照价格进行升序排序,如果价格相同则按照数量升序排序。
五、总结
本文主要介绍了Java中对List集合进行排序的几种方式,包括使用Collections.sort()方法,实现Comparable接口,使用lambda表达式,以及进行多重排序。通过这些方法,我们可以更加方便地对List进行排序,提高我们的开发效率。