Java中List去重

Stream流之distinct去重详细用法 包括自定义对象如何重写equals方法进行自定义判重 阅读详情

一、Stream 去重:list.stream().distinct()

public static List removeDuplicate(List list) {
    List newList = (List) list.stream().distinct().collect(Collectors.toList());
    return newList;
}

首先获得此 list 的 Stream,然后调用 distinct()。Java8 中提供流的方式对数据进行处理,非常快,底层用的是 ForkJoin,提供了并行处理,使得多个处理器同时处理流中的数据,所以耗时非常短。

二、通过 HashSet 剔除重复元素

public static List removeDuplicate(List list) {
    HashSet hashSet = new HashSet(list);
    list.clear();
    list.addAll(hashSet);
    return list;
}

总结:
此种方式是利用了 Set 的特性:元素不可重复,其底层原理是先计算每个对象的 hash 值,再比较元素值是否相同,如果相同,则保留最新的。

三、删除 ArrayList 中重复元素,保持顺序

//通过HashSet剔除重复元素
public static List removeDuplicate(List list) {
    Set set = new HashSet();
    List newList = new ArrayList();
    for (Iterator iter = list.iterator(); iter.hasNext(); ) {
        Object next = iter.next();
        if (set.add(next)) {
            newList.add(next);
        }
    }
    list.clear();
    list.addAll(newList);
    return list;
}

四、遍历 list,用 tempList.contain(),不存在 add

public static List removeDuplicate(List list) {
    List tempList = new ArrayList();
    for (int i = 0; i < list.size(); i++) {
        if (!tempList.contains(list.get(i))) {
            tempList.add(list.get(i));
        }
    }
    return tempList;
}

#五、循环 list 中的所有元素然后删除重复

一定得是顺序重复的,乱序重复的不靠谱儿

//循环list中的所有元素然后删除重复
public static List removeDuplicate(List list) {
    for (int i = 0; i < list.size(); i++) {
        for (int j = list.size() - 1; j > i; j--) {
           if (list.get(i).equals(list.get(j))) {
                list.remove(list.get(i));
            }
        }
    }
    return list;
}

总结:
两层循环,外层循环从第一个元素向最后一个元素循环,内层循环是从最后一个元素向外层循环元素的当前元素循环。比较两个元素是否相等,如果相等,移除靠后的元素来进行去重。这种方法时间复杂度大于 O(n),小于 O(N²)。

java8之对List<T> stream流去重 看的这位大神的非常好的博客,大家可以先去看一下:https://blog.csdn.net/john1337/article/details/108027824 使用distinct去重 简单List<String>去重 package com.it.test; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Stream. 阅读详情

相关推荐

MediaCreationToolW11:Windows11系统升级与修复利器

在日常使用Windows11系统的过程中,我们可能会遇到一些棘手的问题,比如系统更新时出现异常导致无法成功更新,或者系统本身出现异常需要进行无损修复。此外,当我们的电脑尚未升级到Windows11,而我们又希望进行升级时,一款高效且可靠的工具就显得尤为重要。接下来,MediaCreationToolW11将开始下载Windows11的安装文件,并创建Windows11介质。在“选择你要执行的操作”界面中,选择“ISO文件”。此时,你可以使用你的账户登录系统,并开始使用全新的Windows11系统了。

nntxthml的博客 2403

Stream 对列表进行去重的几种方法

来源:juejin.cn/post/6844903842132262926在这里我来分享几种列表去重的方法,算是一次整理吧,如有纰漏,请不吝赐教。

azheng_li的博客 1万+

天池长期赛:二手车价格预测(422方案分享)

本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。

weixin_46685991的博客 1万+

jdk 8新特性 List.stream() .distinct() 去重 List中对象 多条件去重

一;去重 public static Predicate distinctByKey(Function super T, ?> keyExtractor) { Map seen = new ConcurrentHashMap<>(); return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; } distinct()不对对象列表进行去重的直接实现。它是hashCode()和equals()工

左--右 6349

HarmonyOS NEXT 开发者预览版Beta招募应知测试

本次HarmonyOS NEXT 开发者预览版 Beta 招募活动为开发者预览版尝鲜升级,主要供开发者进行应用调测使用,除部分系统应用外,其他所有应用将被清除,因此在进行HarmonyOS NEXT 开发者预览版升级前,需进行数据备份。通过应知测试,并提交了参加HarmonyOS NEXT 开发者预览版招募 Beta 活动的报名信息,就会立刻审核通过并且收到新版本。手机在参加HarmonyOS NEXT 开发者预览版 Beta 招募活动前,需要对应机型升级到招募要求对应的基线版本,并预留内存空间。

长久公子的博客 8648

强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析

本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。

zeta9的博客 619

Java中list集合stream流去重

(2)根据多字段name price去重。(1)根据单字段name去重。

qq_42546307的博客 6399

将ue4程序嵌入qt界面显示

需求:将ue4程序嵌入qt界面显示 思路:通过使用 windowsAPI 对ue4窗口进行设置跟随qt界面以及活动窗口时的位置层序设置

weixin_44342705的博客 5844

Java中List集合对象去重及按属性去重

请直接移步原文。

tellmewhoisi的博客 1920

uniapp | 基于高德地图实现位置选择功能(安卓端)

在uni-app项目中实现地图位置选择功能的解决方案。由于uni.chooseLocation功能受限,采用高德地图API自主开发。系统由父组件poiMap.vue(负责展示和跳转)和子组件poiBox.vue(核心地图逻辑)构成,通过父子组件通信传递位置数据。关键技术包括:1)使用AMapLoader动态加载地图SDK;2)集成PositionPicker实现拖拽选点;3)异步加载AMapUI插件;4)通过事件监听获取位置详情(地址/经纬度)。

大胆尝试,小心实践 730

CKAD-CN考试之路----12

显然,对应的value都已经实现了加密.保存退出,等待pod重新创建。确认secret是否被加密。编辑secret文件。

Q先生 444

Java中List集合对象去重及按属性去重的8种方法

一、本文描述 这一篇文章写一下List集合元素去重的8种方法,实际上通过灵活的运用、排列组合不一定是8种,可能有18种方法。 对象元素整体去重的4种方法 按照对象属性去重的4种方法 为了在下文中进行测试内容讲解,我们先做一些初始化数据 public class ListRmDuplicate { private List<String> list; private List<Player> playerList; @BeforeEach public void set

lck_csdn的博客 4万+

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7888

java list转set去重_Java中List去重的四种方法

Java中List去重的四种方法package com.lxz.test;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;/*** description: List去重* date: 2018年2月10日...

weixin_42511151的博客 3162

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Java】List集合对象去重及按属性去重的多种方法

在Java中,List集合是常用的数据结构之一。在实际开发中,我们经常需要对List集合进行去重操作,特别是按某个属性进行去重。本文将详细介绍几种在Java中对List集合对象去重及按属性去重的方法,并提供一些实用的示例代码。

科技改变人类,技术成就未来 4702

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java steam List指定字段去重

如:角色去重处理 baseRoleList = baseRoleList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(role -> role.getRoleId()))), ArrayList:...

weixin_34416649的博客 3029

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java steam 去重_Java中对List去重 Stream去重的解决方法

问题当下互联网技术成熟,越来越多的趋向去中心化、分布式、流计算,使得很多以前在数据库侧做的事情放到了Java端。今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Java来做,但怎么做呢?解答忽然想起以前写过list去重的文章,找出来一看。做法就是将list中对象的hashcode和equals方法重写,然后丢到HashSet里,然后取出来。这是最初刚学Java的时...

weixin_39726044的博客 1051

java steam 去重_List去重的5种方式

原标题:List去重的5种方式转自:多纤果冻以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据保持添加到其中的数据的顺序Java示例使用LinkedHashSet删除arrayl...

weixin_39789499的博客 1793

关于java的List集合对象去重及按属性去重的8种方法

最近在写一些关于java基础的文章,但是我又不想按照教科书的方式去写知识点的文章,因为意义不大。基础知识太多了,如何将这些知识归纳总结,总结出优缺点或者是使用场景才是对知识的升华。所以我更想把java相关的基础知识进行穿针引线,进行整体上的总结。 总结java中创建并写文件的5种方式 总结java从文件中读取数据的6种方法 总结java创建文件夹的4种方法及其优缺点 总结java中删除文件或文件夹的7种方法 总结java中文件拷贝剪切的5种方式 比如之前我已经写了上面的这些内容,如果对java基础知识总结

gg7894125的博客 4325

stream去重_Java中对List去重 Stream去重的解决方法

问题当下互联网技术成熟,越来越多的趋向去中心化、分布式、流计算,使得很多以前在数据库侧做的事情放到了Java端。今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Java来做,但怎么做呢?解答忽然想起以前写过list去重的文章,找出来一看。做法就是将list中对象的hashcode和equals方法重写,然后丢到HashSet里,然后取出来。这是最初刚学Java的时...

weixin_39621975的博客 939

Java List按照某字段去重

Java8流的新类java.util.stream.Collectors实现了java.util.stream.Collector接口,同时又提供了大量的方法对流(stream)的元素执行各种统计操作。Collectors.collectingAndThen()函数应该最像map and reduce了,它可接受两个参数,第一个参数用于reduce操作,而第二参数用于map操作。也就是,先把流中的所有元素传递给第一个参数,然后把生成的集合传递给第二个参数来处理。

Death Note 6457

java中list去重_Java中List去重操作

HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放;LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代;TreeSet:提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快。操作代码:import java.util.ArrayList;import java.util.LinkedHa...

weixin_32629853的博客 341

【Java】List集合去重的方式

List集合去重的方式

斯基的朦胧 7052

list去重+Java8-Stream distinct 根据list某个字段去重

Java8-Stream流操作List去重distinct、和指定字段去重

sunrj_niu的博客 1万+

java list<map> 去重_java中List和Map的去重

一:List去重问题:有List A和B,A和B中元素都是可保证没重复的,现要合并A、B得到新的List C,要求C中不能有重复元素import java.util.ArrayList;import java.util.List;public class ArrayListTest {public static void main(String[] args) {List A=new ArrayL...

weixin_30325875的博客 2002

Java中List集合对象去重及按属性去重七种方法

Java中List集合对象去重及按属性去重七种方法

浮沉往事意朦胧 1万+
上一篇: Set、HashSet 和 TreeSet
下一篇: ArrayList 为什么线程不安全
JFS_Study
博客等级 码龄6年 363粉丝 359原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值