list的五种去重方法
面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固
下面,我就将五种方法逐一展现
新建一个list数组:
List list = new ArrayList();
list.add(26);
list.add(39);
list.add(39);
list.add(39);
list.add(39);
list.add(5);
list.add(40);
list.add(39);
list.add(25);
System.out.println(list);
方法一:使用java8新特性stream进行List去重
List newList = list.stream().distinct().collect(Collectors.toList());
System.out.println(“java8新特性stream去重:”+newList);
list.add(39);
方法二:双重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));
}
}
}
上面的方法研究后,确实有点小问题,下面放上优化后的方法(不推荐使用,速度太慢)
for (int i = 0; i < list.size(); i++) {for (int j = 0; j < list.size(); ) {
// System.out.println(i+"-"+list.get(i)+"-"+j+"!!!!"+list.get(j));if (i != j && list.get(i) == list.get(j)) {
// System.out.println(j+":"+list.get(j));list.remove(j);} else {j++;}}}
System.out.println(“双重for循环去重:”+list);
list.add(39);
方法三:set集合判断去重,不打乱顺序
Set set1 = new HashSet();
List newList1 = new ArrayList();
for (Integer integer : list) {
if(set1.add(integer)) {
newList1.add(integer);
}
}
System.out.println(“set集合判断去重:”+list);
list.add(39);
方法四:遍历后判断赋给另一个list集合
List newList2 = new ArrayList();
for (Integer integer : list) {
if(!newList2.contains(integer)){
newList2.add(integer);
}
}
System.out.println(“赋值新list去重:”+newList2);
list.add(39);
方法五:set和list转换去重
Set set2 = new HashSet();
List newList3 = new ArrayList();
set2.addAll(list);
newList3.addAll(set2);
System.out.println(“set和list转换去重:”+newList3);
---------------------
作者:Trainer2107
来源:CSDN
原文:https://blog.csdn.net/Trainer2107/article/details/78571619
版权声明:本文为博主原创文章,转载请附上博文链接!
list的五种去重方法相关推荐
- java list 比较_Java中List的五种去重方法及效率对比,你都用对了吗?
01.使用两个for循环实现List去重(有序) /**使用两个for循环实现List去重(有序) * * @param list * */ public static List removeDupl ...
- java中的五种排序方法_用Java排序的五种有用方法
java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...
- linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...
不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312 ...
- python list方法说明_对python中list的五种查找方法说明
Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...
- python list find函数_对python中list的五种查找方法说明
Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...
- 服务器系统记事本乱码,win7系统记事本出现乱码的五种解决方法
win7系统自带有记事本功能,它是一个简单的文字编辑器,用户可直接打开记事本记录文字,相信大家对雨林木风win7系统的记事本在熟悉不过.然而有不少win7系统用户在打开记事本的时候出现乱码,这是怎么回 ...
- 小米路由器显示无法连接到服务器,小米路由无法连接WIFI的五种解决方法【图解】...
越洋帮路由网原创:文章是关于"小米路由无法连接WIFI的五种解决方法[图解]"的相关知识分享,希望可以帮到大家. - 素材来源网络 编辑:小易.小米路由连接WIFI无法上网该怎么办 ...
- Jetson Nano主板的五种联网方法
Jetson Nano主板的五种联网方法 写在前面 联网方法 设备情况 RJ45接口联网 方法1(需要路由器) 方法2(麻烦但可用) USB接口联网 方法3(最简单的方法) 方法4 (成本低易上手) ...
- win11内存完整性不兼容驱动程序的五种删除方法
win11内存完整性不兼容的驱动程序怎么删除?win11的驱动不兼容的话,可能会导致软件或者游戏无法正常运行,也会导致Windows安全中心中的内核隔离--内核完整性功能无法开启.那么win11内存完 ...
最新文章
- php全局变量GLOBAL
- μCos-ii学习笔记1_概述
- Kubernetes安装之五:配置kubectl客户端
- SQL Server 2005学习笔记
- 最详细的创建虚拟机_创建_安装配置_配置启动向导
- vue.js框架搭建
- 源码分析参考:Pipelines
- html中如何设置几张图片在一个div里来回切换_从 B 站的秋季主题中学习 “图层组合动画”...
- CDH Sentry介绍
- python定义一个函数列表排序_Python 列表(修改、添加、删除、排序)
- 博文视点大讲堂第15期:猎头揭秘
- 使用pscp在Linux、Windows间互传文件
- 小学到大学各类英语教学视频(一)
- pyhong爬虫——大众点评——用户信息
- 基金定投如何选择买卖点?——关于定投的择时研究
- 共享充电宝为啥能够盈利
- 服务器虚拟化太金苹果专业十,合作能力
- 阿里云服务器是如何计费的?包年包月与按量付费有什么区别?
- ArcGIS小知识(五)——arcmap锁定图层-编辑时只选择唯一图层
- Linux三剑客用法整理