91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

石渠县| 措美县| 长寿区| 神农架林区| 会宁县| 新泰市| 中阳县| 龙门县| 铁力市| 和平县| 惠水县| 玛纳斯县| 娄烦县| 林州市| 金门县| 临朐县| 津市市| 册亨县| 兰考县| 乐亭县| 孟村| 通城县| 灯塔市| 平利县| 乡城县| 富锦市| 易门县| 江阴市| 安图县| 饶平县| 临夏县| 平武县| 怀宁县| 长宁县| 鹰潭市| 甘谷县| 肇州县| 牙克石市| 河津市| 金乡县| 瑞金市|