首页 > 编程语言 >java lambda list集合中对象某属性重复,只取第一个对象

java lambda list集合中对象某属性重复,只取第一个对象

时间:2024-04-24 22:12:24浏览次数:28  
标签:Map java 对象 List 只取 list 属性

可以使用Java 8的流式编程和Lambda表达式来实现这个需求:

List<MyObject> list = getList(); // 获取List集合
Map<String, MyObject> map = list.stream()
        .collect(Collectors.toMap(MyObject::getProperty, Function.identity(), (o1, o2) -> o1));
List<MyObject> resultList = new ArrayList<>(map.values());

其中,MyObject是具体的对象类,getProperty()是获取属性的方法。上述代码中,使用stream()将List转换为流,然后使用toMap()方法将元素按照属性值作为key,对象本身作为value存入Map中,如果有重复属性,则使用第一个对象。最后,将Map的values取出来,存入新的List中,即可得到只取第一个对象的List集合。

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/18156481

标签:Map,java,对象,List,只取,list,属性
From: https://www.cnblogs.com/lingyejun/p/18156481

相关文章

  • java中是否所有的stream流都需要主动关闭
    流的概念在输出数据时,内存中的特定数据排成一个序列,依次输出到文件中,这个数据序列就像流水一样源源不断地“流”到文件中,因此该数据序列称为输出流。同样,把文件中的数据输入到内存中时,这个数据序列就像流水一样“流”到内存中,因此把该数据序列称为输入流。 输入流与输出流......
  • 9.prometheus监控--监控springboot2.x(Java)
    一、环境部署yumsearchjava|grepjdkyuminstall-yjava-11-openjdk-devel二、监控java应用(tomcat/jar)JMXexporter负责收集Java虚拟机信息---没举例,等以后再做测试进入到tomcat安装目录,vimPROMETHEUS_JMX_EXPORTER_OPTS="-javaagent:../prometheus-exporter......
  • K8S集群问题:案例一:Java调用Glibc2.28-69内存分配器无法限制虚拟内存VIRT问题
    一、问题描述1、背景:租户反馈,Apr711:22容器出现夯死现象,容器部署的单个java进程;宿主机上,top显示的容器进程virt内存持续增长32G,目前messages日志没有看到oom的记录,基本是。租户其他bc7、8系统上有添加参数MALLOC_ARENA_MAX进行限制,基本维持在16G左右,目前bcoe21.10系统配置......
  • Java源码阅读-String中的private final char value[];
    /**Thevalueisusedforcharacterstorage.*/privatefinalcharvalue[];在Java的源码中是这样来实现String对字符串的存储的首先使用final关键字来修饰这个变量,来保证value不会被重写,确保字符串的内容在创建后不会被修改,从而保持字符串的不可变性。final是......
  • Java源码阅读-String.startsWith(String prefix, int toffset)
    /***Testsifthesubstringofthisstringbeginningatthe*specifiedindexstartswiththespecifiedprefix.**@paramprefixtheprefix.*@paramtoffsetwheretobeginlookinginthisstring.*@return{@codetrue}ifthecharacter......
  • JDK源码分析-ArrayList
    概述ArrayList是List接口的一个实现类,也是Java中最常用的容器实现类之一,可以把它理解为「可变数组」。Java中的数组初始化时需要指定长度,而且指定后不能改变。ArrayList内部也是一个数组,它对数组的功能做了增强:主要是在容器内元素增加时可以动态扩容,这也是ArrayList的......
  • JavaScript精粹:26个关键字深度解析,编写高质量代码的秘诀!
    JavaScript关键字是一种特殊的标识符,它们在语言中有固定的含义,不能用作变量名或函数名。这些关键字是JavaScript的基础,理解它们是掌握JavaScript的关键。今天,我们将一起探索JavaScript中的26个关键字,了解这些关键字各自独特的含义、特性和使用方法。一、JavaScript关键字是什么......
  • 设计模式-状态模式在Java中的使用示例-信用卡业务系统
    场景在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计,我们可以使用一种被称之为状态模式的设计模式。状态模式用于解决系统中复杂对象的状态转换以及不同状......
  • 记一次new ArrayList导致的cpu飙升问题排查
    参考:https://mp.weixin.qq.com/s/8JDPOAvmKYP8JZxau45hdw前言当时场景正常的jvm监控曲线图产生问题的jvm监控曲线图具体分析结束语昨天线上容器突然cpu飙升,也是第一次排查这种问题所以记录一下~前言首先问题是这样的,周五正在写文档,突然收到了线上报警,发......
  • Windows中jps命令无法查看java进程问题
    参考 https://blog.csdn.net/qq_43413788/article/details/107772563原因:在Windows系统中,每个java进程启动之后都在%TMP%/hsperfdata_${user}(${user}为当前登录用户名)目录下建立一个以该java进程pid为文件名的文件,用以记录该java进程的一些信息。通常是因为没......