一、直接使用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-tw/n/334283.html
微信掃一掃
支付寶掃一掃