如何消除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/n/142439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RAYHRAYH
上一篇 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

发表回复

登录后才能评论