list的五种去重方法

list的五种去重方法面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固下面,我就将五种方法逐一展现新建一个list数组:Listlist=newArrayList();list.add(26);list.add(39);list.add(5)…

大家好,又见面了,我是你们的朋友全栈君。

面试中经常被问到的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 
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141155.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django之HttpRequest和HttpReponse

    当一个web请求链接进来时,django会创建一个HttpRequest对象来封装和保存所有请求相关的信息,并且会根据请求路由载入匹配的试图函数,每个请求的试图函数都会返回一个HttpResponse

    2021年12月29日
    54
  • 项目章程的内容有哪些?[通俗易懂]

    项目章程的内容有哪些?[通俗易懂]项目章程的内容有:1.项目目的或者批准项目的原因;2.可测量的项目目标和相关的成功标准;3.项目的总体要求;4.概括性的项目描述;5.项目的主要风险;6.总体里程碑进度计划;

    2022年8月2日
    11
  • c语言字符数组拼接

    c语言字符数组拼接废话不多说,直接上代码#include<stdio.h>#include<string.h>voidmystrcat(chara[],charb[]){inti,j;//计数a[]个数ifor(i=0;i<strlen(a);i++);//这地方比较繁琐,可不写,直接i=strlen…

    2022年6月10日
    41
  • Mac Curl命令「建议收藏」

    Mac系统自带curl命令输出百度首页的html文件内容:curlhttp://www.baidu.com保存当前网页curlhttp://www.baidu.com>duang.html发送post请求curl-Xposthttp://www.baidu.com

    2022年4月16日
    284
  • osip和mysql_osip2/eXosip2调试笔记

    osip和mysql_osip2/eXosip2调试笔记软件版本:libosip2-3.3.0.tar.gzlibeXosip2-3.3.0.tar.gz./configure–prefix=/opt/sip/target–disable-staticmakemakeinstall测试代码:代码来源:http://blog.csdn.net/bat603/archive/2006/11/15/1386277.aspx1、UAS…

    2022年6月24日
    26
  • spel表达式的用法_el表达式判断是否为空

    spel表达式的用法_el表达式判断是否为空spel表达式运算使用翻看公司代码,这一块不是很懂,查资料,记一下,还是太菜1.常用的对象Expression:表达式对象SpelExpressionParser:表达式解析器EvaluationContext:上下文2.使用本文参考了下面的几篇文章https://www.cnblogs.com/shihuc/p/9338173.htmlhttps://blog.csdn.net/f641385712/article/details/90812967下面的例子主要是来源于第一

    2025年9月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号