中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java8 用Lambda表達式給List集合排序的實現

發布時間:2020-08-31 20:29:03 來源:腳本之家 閱讀:173 作者:尋找風口的豬 欄目:編程語言

Lambda用到了JDK8自帶的一個函數式接口Comparator<T>。

準備一個Apple類

public class Apple {
  private int weight;
  private String color;

  public Apple(){}

  public Apple(int weight) {
    this.weight = weight;
  }

  public Apple(int weight, String color) {
    this.weight = weight;
    this.color = color;
  }
  
  setters();getters();toString(); 
}

步驟一:

public class AppleComparator implements Comparator<Apple> {
  @Override
  public int compare(Apple o1, Apple o2) {
    return o1.getWeight() - o2.getWeight();
  }
}

步驟二:準備一個List集合

ArrayList<Apple> inventory = Lists.newArrayList(
        new Apple(10, "red"),
        new Apple(5, "red"),
        new Apple(1, "green"),
        new Apple(15, "green"),
        new Apple(2, "red"));

步驟三:順序排序,三種方式

/**
 * 順序排序
 */
// 1、傳遞代碼,函數式編程
inventory.sort(new AppleComparator());
System.out.println(inventory);

// 2、匿名內部類
inventory.sort(new Comparator<Apple>() {
  @Override
  public int compare(Apple o1, Apple o2) {
    return o1.getWeight() - o2.getWeight();
  }
});

// 3、使用Lambda表達式
inventory.sort((a, b) -> a.getWeight() - b.getWeight());

// 4、使用Comparator的comparing
Comparator<Apple> comparing = comparing((Apple a) -> a.getWeight());
inventory.sort(comparing((Apple a) -> a.getWeight()));
//或者等價于
inventory.sort(comparing(Apple::getWeight));

步驟四:逆序排序

/**
 * 逆序排序
 */
// 1、 根據重量逆序排序
inventory.sort(comparing(Apple::getWeight).reversed()); 

步驟五:如果兩個蘋果一樣重,就得再找一個條件來進行排序

// 2、如果兩個蘋果的重量一樣重,怎么辦?那就再找一個條件進行排序唄
inventory.sort(comparing(Apple::getWeight).reversed().thenComparing(Apple::getColor));

https://gitee.com/play-happy/base-project

參考:

【1】《Java8實戰》

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合水县| 泗阳县| 蒲城县| 安多县| 梅州市| 如东县| 镇安县| 天峻县| 黑河市| 离岛区| 科尔| 甘泉县| 水富县| 嘉鱼县| 泾源县| 正定县| 郎溪县| 湖州市| 巴林左旗| 长治市| 新和县| 永修县| 溧阳市| 锦州市| 玛曲县| 克山县| 钟祥市| 稷山县| 休宁县| 资兴市| 潞西市| 彰化县| 和龙市| 赤壁市| 平江县| 乐陵市| 仁怀市| 乐业县| 花垣县| 进贤县| 南昌市|