如何消除Lambda中重複項

一、使用distinct()

Lambda表達式可以從集合中篩選出唯一的元素,使用distinct()方法可以幫助消除Lambda中的重複項。該方法會找出集合中的不同元素,並返回唯一的元素集合。

ArrayList numbers = new ArrayList(Arrays.asList(1, 2, 3, 2, 4, 5, 1));
List distinctNumbers = numbers.stream().distinct().collect(Collectors.toList());

在上面的代碼中,我們創建了一個整數類型的集合,並使用distinct()方法來查找集合中的不同元素。最終將其收集到列表中。結果是[1, 2, 3, 4, 5], 集合中所有的重複元素都被消除了。

二、使用toSet()

toSet()方法是將元素添加到Set集合中,而Set集合不允許重複元素存在,因此重複元素在添加時會被自動去除。通過List的stream()方法,將List轉換為Stream,然後通過collect()方法將Stream轉換為Set,重複元素自動去重。

ArrayList numbers = new ArrayList(Arrays.asList(1, 2, 3, 2, 4, 5, 1));
Set uniqueNumbers = numbers.stream().collect(Collectors.toSet());

在上面的代碼中,我們將一個整數類型的集合轉換為了Set,重複元素已被消除,最終uniqueNumbers包含了集合中所有的唯一元素。

三、使用groupingBy()和collect()

如果我們需要將集合中的元素按照某個屬性進行分組,同時去除重複元素,那麼我們可以使用groupingBy()和collect()方法。

public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

List persons = Arrays.asList(new Person("Tom", 20),
        new Person("Tom", 25),
        new Person("Jack", 30),
        new Person("Kate", 30));

Map<Integer, Set> uniquePersonNamesByAge =
        persons.stream().collect(Collectors.groupingBy(Person::getAge,
                Collectors.mapping(Person::getName, Collectors.toSet())));

在上面的代碼中,我們創建了Person類,使用groupingBy()方法按照年齡進行分組,同時使用mapping()和toSet()方法將各組中的姓名去重,最終uniquePersonNamesByAge包含了按年齡分組的所有唯一姓名。

四、使用HashSet

我們也可以使用一個HashSet集合來幫助消除Lambda中的重複項。

ArrayList numbers = new ArrayList(Arrays.asList(1, 2, 3, 2, 4, 5, 1));
Set uniqueNumbers = new HashSet(numbers);

在上面的代碼中,我們創建一個整數類型的HashSet,將原始的集合中的元素添加到HashSet中。由於HashSet不允許重複元素,因此所有重複元素都被自動去除,最終uniqueNumbers包含集合中的所有唯一元素。

原創文章,作者:RAYH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142439.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RAYH的頭像RAYH
上一篇 2024-10-11 11:42
下一篇 2024-10-11 11:42

相關推薦

  • 掌握lambda排序

    一、Lambda表達式簡介 Lambda表達式(又稱為函數式介面)為Java 8新增的一個功能,可使代碼更加簡潔。Lambda表達式的作用是向方法傳遞一個代碼塊,從而使代碼更加具有…

    編程 2025-04-23
  • lambda遍歷map詳解

    一、基礎概念 1、lambda表達式的含義 lambda:arguemts:expression 其中,arguments表示lambda表達式的參數列表,expression則表…

    編程 2025-04-22
  • lambda 求和的使用詳解

    一、什麼是lambda函數 lambda函數也被稱為匿名函數,它是一種可以在代碼中直接定義的小函數。它可以被用於一些特殊場合,例如在函數中作為參數傳遞、在列表、字典或集合等數據結構…

    編程 2025-02-24
  • 掌握Java Lambda表達式技巧

    Java Lambda表達式是Java 8中新增的一種編程語法,它可以讓我們以函數式編程的方式來編寫代碼,同時也提高了代碼的可讀性和簡潔性。如果你還不太了解Java Lambda表…

    編程 2025-01-14
  • lambda遍歷map

    一、lambda遍歷map集合求個數 my_map = {“apple”: 2, “banana”: 3, “orange”: 4} count = len(list(filter…

    編程 2025-01-11
  • lambda架構詳解

    一、lambda架構是什麼 lambda架構是一種具有橫向擴展性能,用於構建大規模、分散式、實時數據處理系統的架構。該架構基於對數據處理管道的分層,以實現高效和低延遲的數據處理。此…

    編程 2025-01-02
  • 使用Java8 Lambda表達式的好處

    Java8中引入了Lambda表達式,是一種可將代碼邏輯看作數據的編程方式,可以使代碼更加簡潔、可讀和易於維護。本文將重點介紹使用Java8 Lambda表達式的好處,並提供相關代…

    編程 2024-12-28
  • Java Lambda Query Wrapper:一款高效實用的查詢構建工具

    一、介紹 Java Lambda Query Wrapper(簡稱JLQ),是一款基於MyBatis-Plus的查詢構建工具,通過Lambda 表達式,優雅地構建出類型安全的 SQ…

    編程 2024-12-28
  • Java Lambda表達式基礎知識

    一、引言 在Java 8中,引入了Lambda表達式(lambda expressions),它可以用更簡潔的方式實現一個方法,從而可以提高代碼的可讀性和重用性。Lambda表達式…

    編程 2024-12-25
  • Python關鍵詞解析:lambda函數

    一、什麼是lambda函數 在介紹lambda函數之前,我們需要了解一下匿名函數的概念。 Python中,我們通常使用def關鍵字來定義一個函數,命名方式如下: def funct…

    編程 2024-12-24

發表回復

登錄後才能評論