List去除重复数据的五种方式
1、使用 LinkedHashSet 删除 arraylist 中的重复数据
LinkedHashSet 是在一个 ArrayList 删除重复数据的最佳方法。LinkedHashSet 在内部完成两件事:
删除重复数据
保持添加到其中的数据的顺序
Java 示例使用 LinkedHashSet 删除 arraylist 中的重复项。在给定的示例中,numbersList 是包含整数的
arraylist,其中一些是重复的数字。
例如 1,3 和 5. 我们将列表添加到 LinkedHashSet,然后将内容返回到列表中。结果 arraylist 没有重复的整数。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;public class ArrayListExample
{public static void main(String[] args){ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));System.out.println(numbersList);LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);System.out.println(listWithoutDuplicates);}
}```
# 输出结果
```javascript[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8][1, 2, 3, 4, 5, 6, 7, 8]
2、使用 java8 新特性 stream 进行 List 去重
要从 arraylist 中删除重复项,我们也可以使用 java 8 stream api。使用 steam 的 distinct()
方法返回一个由不同数据组成的流,通过对象的 equals()方法进行比较。收集所有区域数据 List 使用 Collectors.toList()。
Java 程序,用于在不使用 Set 的情况下从 java 中的 arraylist 中删除重复项。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class ArrayListExample
{public static void main(String[] args){ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));System.out.println(numbersList);List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());System.out.println(listWithoutDuplicates);}}
输出结果
[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8][1, 2, 3, 4, 5, 6, 7, 8]
3、利用 HashSet 不能添加重复数据的特性 由于 HashSet 不能保证添加顺序,所以只能作为判断条件保证顺序:
private static void removeDuplicate(List<String> list) {HashSet<String> set = new HashSet<String>(list.size());List<String> result = new ArrayList<String>(list.size());for (String str : list) {if (set.add(str)) {result.add(str);}}list.clear();list.addAll(result);
}
4、利用 List 的 contains 方法循环遍历, 重新排序, 只添加一次数据, 避免重复:
private static void removeDuplicate(List<String> list) {List<String> result = new ArrayList<String>(list.size());for (String str : list) {if (!result.contains(str)) {result.add(str);}}list.clear();list.addAll(result);
}
5、双重 for 循环去重
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(i!=j&&list.get(i)==list.get(j)) {
list.remove(list.get(j)); }
}
相关文章:
List去除重复数据的五种方式
1、使用 LinkedHashSet 删除 arraylist 中的重复数据 LinkedHashSet 是在一个 ArrayList 删除重复数据的最佳方法。LinkedHashSet 在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java 示例使用 LinkedHashSet 删除 arraylist 中的重复项。在给定的示例…...
VUE3自定义文章排行榜的简单界面
文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"article-ranking"><div class"header"><h2 class"title">{{ title }}</h2></div><div class"ranking-list&qu…...
七通道NPN 达林顿管GC2003,专为符合标准 TTL 而制造,最高工作电压 50V,耐压 80V
GC2003 内部集成了 7 个 NPN 达林顿晶体管,连接的阵列,非常适合逻辑接口电平数字电路(例 如 TTL,CMOS 或PMOS 上/NMOS)和较高的电流/电压,如电灯电磁阀,继电器,打印机或其他类似的负…...
若依springboot接入feign踩坑记录
问题情境: 简单的项目采用了若依的前后端分离版本单体应用,之前采用forest请求调用第三方接口,改为feign接口调用后,引入feign报错 error creating bean with name ‘configurationPropertiesbean’ 解决方案: spri…...
Lumerical Script ------ Error: <文件目录> line x:syntax error
Lumerical Script ------ Error: <文件目录> line x:syntax error 引言正文引言 在 Lumerical Script ------ Error: line 0: syntax error 一文中我们介绍了一种常见的错误提示信息。这里,我们使用类似的代码,介绍另一种提示错误提示信息。 正文 有时候,当我们在…...
Opencv基础与学习路线
Opencv Opencv每一篇目具体: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 Opencv(5)平滑处理 具体Opencv相关demo代码欢迎访问我的github仓库(包含python和c代码) demo代码 文章目录 Opencv一…...
Python装饰器的使用详解
目录 1、函数装饰器 1.1、闭包函数 1.2、装饰器语法 1.3、装饰带参数的函数 1.4、被装饰函数的身份问题 1.4.1、解决被装饰函数的身份问题 1.5、装饰器本身携带/传参数 1.6、嵌套多个装饰器 2、类装饰器 装饰器顾名思义作为一个装饰的作用,本身不改变被装…...
基于springboot+vue的党员教育和管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
三个伪类让你的CSS代码更加优雅
公众号:程序员白特,欢迎一起交流学习~ 原文:CSS整洁之道——:is()、:where()和:has()的用法 - 掘金 (juejin.cn) 让我们写出优雅界面的CSS,它也总是把自己进化得更加优雅。 今天我们花5分钟时间学习三个优雅的CSS伪类:…...
幻兽帕鲁联机服务器搭建
幻兽帕鲁联机服务器搭建 开通云服务器 云主机购买|香港云服务器|香港云主机|美国云服务器|弹性云主机租用尽在-特网科技 建议选择4核心 16G内存 10M带宽,可满足6-15人游玩 下载安装脚本 windows系统: 下载 http://downinfo.myhostadmin.net/palserver/install…...
京东商品优惠券API获取商品到手价
item_get_app-获得JD商品详情原数据 公共参数 请求地址: jd/item_get_app 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,i…...
Flutter Version Manager (FVM): Flutter的版本管理终极指南
Flutter笔记 Flutter Version Manager (FVM) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/136300307 my-websit…...
Docker技术概论(3):Docker 中的基本概念
Docker技术概论(3) Docker 中的基本概念 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://…...
死记硬背spring bean 的生命周期
1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象,在这个对象没有任何引用的时候,会被gc给回收掉。而对于spring而言,它本身存在一个Ioc容器,就是用来管理对象的,而对象的生命周期也完全由这个容…...
海外网红营销策略:如何将红人粉丝有效转化为品牌忠实粉丝?
在数字化时代,社交媒体已经成为品牌推广和营销的不可或缺的一部分。随着海外网红营销的崛起,品牌们纷纷将目光投向这个新兴的营销领域。然而,仅仅依赖网红的影响力来达到品牌传播的效果是不够的,更为重要的是如何将网红的粉丝转化…...
java之Bean对象
1. 什么是Bean? Bean被实例化的,是被Spring框架所管理的Java对象。 Spring容器会自动完成Bean的实例化。将所创建的的Bean自动注入到Ioc容器中以供调用。 spring框架中 IOC容器中管理的对象就是Bean对象 2. 第三方bean Bean 因为第三方bean࿰…...
Flink——芒果TV的实时数仓建设实践
目录 一、芒果TV实时数仓建设历程 1.1 阶段一:Storm/Flink JavaSpark SQL 1.2 阶段二:Flink SQLSpark SQL 1.3 阶段三:Flink SQLStarRocks 二、自研Flink实时计算调度平台介绍 2.1 现有痛点 2.2 平台架构设计 三、Flink SQL实时数仓分…...
卸载云服务器上的 MySQL 数据库
执行以下命令以停止 MySQL 服务: sudo service mysql stop执行以下命令以彻底卸载 MySQL: sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 这将删除 MySQL 数据库服务器、客…...
AUTOSAR SPI详解
1.SPI通信 1)SPI通信脚 SCLO:串行时钟sclk。MTSR:主向从方向数据MTSR(主发送从接收)。MRST:从向主方向数据MRST(主接收从发送)。SLSO:从选择信号SLS,支持16路片选控制。 2) SPI状态机 2.SPI通信波形 在主…...
SpringBoot快速入门(黑马学习笔记)
需求 需求:基于SpringBoot的方式开发一个Web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World~"。 开发步骤 第一步:创建SpringBoot工程项目 第二步:定义HelloController类,添加方…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
