当前位置: 首页 > news >正文

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)); } 
} 
http://www.lryc.cn/news/308587.html

相关文章:

  • VUE3自定义文章排行榜的简单界面
  • 七通道NPN 达林顿管GC2003,专为符合标准 TTL 而制造,最高工作电压 50V,耐压 80V
  • 若依springboot接入feign踩坑记录
  • Lumerical Script ------ Error: <文件目录> line x:syntax error
  • Opencv基础与学习路线
  • Python装饰器的使用详解
  • 基于springboot+vue的党员教育和管理系统
  • 三个伪类让你的CSS代码更加优雅
  • 幻兽帕鲁联机服务器搭建
  • 京东商品优惠券API获取商品到手价
  • Flutter Version Manager (FVM): Flutter的版本管理终极指南
  • Docker技术概论(3):Docker 中的基本概念
  • 死记硬背spring bean 的生命周期
  • 海外网红营销策略:如何将红人粉丝有效转化为品牌忠实粉丝?
  • java之Bean对象
  • Flink——芒果TV的实时数仓建设实践
  • 卸载云服务器上的 MySQL 数据库
  • AUTOSAR SPI详解
  • SpringBoot快速入门(黑马学习笔记)
  • 压力测试工具Jmeter的下载与使用
  • kubectl 陈述式资源管理方法
  • 从 iOS 设备恢复数据的 20 个iOS 数据恢复工具
  • cpp基础学习笔记03:类型转换
  • H3C OSPF 外部路由引入实验
  • ARM简介
  • MySQL(基础篇)——事务
  • XGB-15:调参注意事项
  • 蓝桥杯_定时器的基本原理与应用
  • 【跨境电商须知】FP独立站的特点和痛点有哪些?
  • js 精确计算(解决js四则运算精度缺失问题)