一、直接使用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/zh-hant/n/334283.html