一、直接使用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进行排序,提高我们的开发效率。
原创文章,作者:VVPDM,如若转载,请注明出处:https://www.506064.com/n/334283.html