List数组去重的几种方法
1,使用 LinkedHashSet 删除 arraylist 中的重复数据
LinkedHashSet 是在一个 ArrayList 删除重复数据的最佳方法,LinkedHashSet 在内部完成两件事
(1).删除重复数据
(2) 保持添加到其中的数据的顺序
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);}}
输出结果:
[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 中删除重复项,我们也可以使用 java8 stream api,使用 steam 的 distinct() 方法返回一个由不同数据组成的流,通过对象的 equals() 方法进行比较。
收集所有区域数据 List 使用 Collectors.toList()。
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数组去重的几种方法相关推荐
- java hashmap 去重_java数组去重的两种方法
我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...
- 两个对象数组去重的3种方法
两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...
- 数组去重的12种方法总结
数组去重的11种方法 (1)ES5常用:利用for嵌套for,然后splice去重 function unique(arr) {for (var i = 0; i < arr.length; i ...
- java数组去重方法是,java数组去重的两种方法
我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...
- JavaScript数组去重的五种方法
JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...
- 数组去重--这几种方法够不?
数组去重,是校招面试的必考知识点.简单的说,数组去重就是将一个数组中的相同的元素删除,只保留其中的一个.这里的相同其实是一个陷阱,有好多同学只认为值相等即为相同,而忽略类类型的判断.所以大家在进行数组 ...
- Js中数组去重的几种方法
前几天在看前端面试题的时候,其中js部分有个问题是实现数组去重的算法,一开始就想了一两种方法,后来仔细回忆了下这个题,觉得该问题实现方法确实不止局限于一两种方法 ,从不同的角度去看待该问题就会有多种实 ...
- JS----JavaScript数组去重(12种方法,史上最全)
数组去重的方法 一.利用ES6 Set去重(ES6中最常用) Set 不包含重复元素的值的集合 Map 双列集合 键值对 与object的区别 : object中的key只能是string类型 而Ma ...
- 原生JS数组去重的几种方法
有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢? 这能怎么办,自己手动实现嘛.(以下代码直接在原型上添加的的方法,为的就是和原 ...
- 2019.08.30数组去重的几种方法以及所需时间对比
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
最新文章
- uiautomator 代码记录 :BT接收测试
- python写入文件-Python写入文件(write和writelines)详解
- java基础系列:集合基础(2)
- 这个一夜暴富的秘诀你还不知道?
- C语音的预处理,编译,汇编,链接过程分析
- 在Angular单个的单元测试里,调用多次detectChange,会重复执行ngAfterViewInit hook吗
- [AGC026D]Histogram Coloring
- SpringMVC图片上传与显示
- 在linux中建立一个vim的目录,Linux学习笔记一(目录结构、Vim编辑器、用户管理)...
- 东半球最全的 postman 使用教程
- MongoDB-与SpringBoot集成
- SpringMVC-高级参数绑定
- 数据挖掘十大算法-决策树的实现
- 微信小程序跳过第三方的_微信小程序工具 第三方平台
- NYOJ 822 画图
- C++虚函数及虚函数表(内存分配)简析
- 青鸟BCNT-网络信息安全工程师
- 经纬财富:沧州散户炒白银必读
- C++设计模式 | Singleton单例模式
- 点线面的意义_【干货】设计中的点线面到底有什么用?
热门文章
- OpenCL编程(1)- 开发环境搭建(NVIDIA GPU+Win10篇)
- 2021关于性能测试需要注意的6大要点(来看看自己还有那些没注意到)
- html5+mrow标签,HTML5 MathML
- 进制转换,16进制与float互转
- 《理解矩阵》——转载自孟岩老师
- 无花果量子计算机进展,无花果累低调做人,科学敬业奉献今生
- 2021胡润百富榜出炉:数据告诉你钟睒睒如何成为中国首富
- ORACLE 数据文件创建,查询,删除,恢复 相关SQL 整理
- Spring错误Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Reflec
- stdlib.h和stdio.h的区别