面试中经常被问到的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的五种去重方法相关推荐

  1. java list 比较_Java中List的五种去重方法及效率对比,你都用对了吗?

    01.使用两个for循环实现List去重(有序) /**使用两个for循环实现List去重(有序) * * @param list * */ public static List removeDupl ...

  2. java中的五种排序方法_用Java排序的五种有用方法

    java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...

  3. linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...

    不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312 ...

  4. python list方法说明_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  5. python list find函数_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  6. 服务器系统记事本乱码,win7系统记事本出现乱码的五种解决方法

    win7系统自带有记事本功能,它是一个简单的文字编辑器,用户可直接打开记事本记录文字,相信大家对雨林木风win7系统的记事本在熟悉不过.然而有不少win7系统用户在打开记事本的时候出现乱码,这是怎么回 ...

  7. 小米路由器显示无法连接到服务器,小米路由无法连接WIFI的五种解决方法【图解】...

    越洋帮路由网原创:文章是关于"小米路由无法连接WIFI的五种解决方法[图解]"的相关知识分享,希望可以帮到大家. - 素材来源网络 编辑:小易.小米路由连接WIFI无法上网该怎么办 ...

  8. Jetson Nano主板的五种联网方法

    Jetson Nano主板的五种联网方法 写在前面 联网方法 设备情况 RJ45接口联网 方法1(需要路由器) 方法2(麻烦但可用) USB接口联网 方法3(最简单的方法) 方法4 (成本低易上手) ...

  9. win11内存完整性不兼容驱动程序的五种删除方法

    win11内存完整性不兼容的驱动程序怎么删除?win11的驱动不兼容的话,可能会导致软件或者游戏无法正常运行,也会导致Windows安全中心中的内核隔离--内核完整性功能无法开启.那么win11内存完 ...

最新文章

  1. php全局变量GLOBAL
  2. μCos-ii学习笔记1_概述
  3. Kubernetes安装之五:配置kubectl客户端
  4. SQL Server 2005学习笔记
  5. 最详细的创建虚拟机_创建_安装配置_配置启动向导
  6. vue.js框架搭建
  7. 源码分析参考:Pipelines
  8. html中如何设置几张图片在一个div里来回切换_从 B 站的秋季主题中学习 “图层组合动画”...
  9. CDH Sentry介绍
  10. python定义一个函数列表排序_Python 列表(修改、添加、删除、排序)
  11. 博文视点大讲堂第15期:猎头揭秘
  12. 使用pscp在Linux、Windows间互传文件
  13. 小学到大学各类英语教学视频(一)
  14. pyhong爬虫——大众点评——用户信息
  15. 基金定投如何选择买卖点?——关于定投的择时研究
  16. 共享充电宝为啥能够盈利
  17. 服务器虚拟化太金苹果专业十,合作能力
  18. 阿里云服务器是如何计费的?包年包月与按量付费有什么区别?
  19. ArcGIS小知识(五)——arcmap锁定图层-编辑时只选择唯一图层
  20. Linux三剑客用法整理

热门文章

  1. 用Python求素数
  2. 吴恩达机器学习课程笔记——第一周
  3. 遗传算法组卷使用心得
  4. UVa 10849 - Move the bishop
  5. MySQL数据库面试题五(2020最新版)
  6. 双目视觉(二)双目匹配的困难和评判标准
  7. Web发布cab文件打包的ActiveX控件总结
  8. 【金猿案例展】福建邮政储蓄银行——信用卡业务自助分析应用
  9. 同伦法(Homotopy Method)
  10. 首款融合区块链技术的 AI 音箱