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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql下载和安装详细教程

    mysql下载和安装详细教程参考链接:https://blog.csdn.net/zhujialiang18/article/details/79780131https://www.jb51.net/article/158587.htm下载安装包链接:一.MySQL的下载与安装1.下载MySQL:https://dev.mysql.com/downloads/(官网),这里我们选择社区版,如下图接下来我们选择下…

    2022年6月11日
    42
  • 盘点分布式文件存储系统____分布式文件存储系统简介

    盘点分布式文件存储系统____分布式文件存储系统简介在项目的数据存储中,结构化数据通常采用关系型数据库,非结构化数据(文件)的存储就有很多种方式,服务器本地存储、Nas挂载、ftp等等,今天就来盘点一下,分布式文件存储系统。一、分布式存储简介1、什么是分布式存储在开始介绍分布式存储之前,先了解一下,非分布式的存储方案。在单机时代,将文件直接存储在服务部署的服务器上——直连存储(DAS):存储和数据直连,拓展性、灵活性差。为了扩展,将文件和服务分离,通过网络连接——中心化存储(NAS、SAN):设备类型丰富,通过网络互连,具有一定的拓展.

    2022年6月10日
    74
  • 安卓项目中so库选择(ndk abiFilters设置,armeabi,armeabi-v7a,arm64-v8a)[通俗易懂]

    安卓项目中so库选择(ndk abiFilters设置,armeabi,armeabi-v7a,arm64-v8a)[通俗易懂]背景Android系统本质是一个经过改造的Linux系统,so库是Linux系统上使用的共享库(类似windows上的dll)。最早,Android系统只支持ARMv5的CPU构架,随着Android系统的发展,又加入了ARMv7(2010),x86(2011),MIPS(2012),ARMv8,MIPS64和x86_64(2014)。每一种CPU构…

    2022年5月11日
    39
  • mysql databasemetadata_JDBC–使用DatabaseMetaData获取数据库信息

    mysql databasemetadata_JDBC–使用DatabaseMetaData获取数据库信息一些方法:getURL():返回一个String类对象,代表数据库的URL。getUserName():返回连接当前数据库管理系统的用户名。isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。getDatabaseProductName():返回数据库的产品名称。getDatabaseProductVersion():返回数据库的版本号。getDriverName():…

    2022年6月19日
    23
  • mysql行转列函数_mysql行转列,函数GROUP_CONCAT(expr)

    mysql行转列函数_mysql行转列,函数GROUP_CONCAT(expr)demo:语句:SELECT’行’id,”product_nameUNIONSELECTid,product_nameFROM`product`WHEREid<5结果:行1icbc2测试测试314笔记本电脑语句:SELECT’行转列后’id,”product_nameUNIONSELECTGROUP_CONCAT(id)id,GROUP_CONCA…

    2022年5月6日
    2.6K
  • ssl证书怎么用_为什么会ssl证书无效

    ssl证书怎么用_为什么会ssl证书无效1.打开网站:https://freessl.cn/按提示操作,验证类型:离线验证;2.会给出一个域名的访问路径和一个文件内容,按照域名解析的主机配置nginx或其它的web服务,返回文件给出的内容;3.确认文件url和内容无误后点验证;4.通过后可以在KeyManager里的证书管理里看到颁发的证书;5.点更多然后选择导出Nginx证书,crt为证书,key为密钥;6.将文件分发到nginx等其它需要证书的服务上去使用;注意:这里最关键的一步就是,你的域…

    2025年8月12日
    3

发表回复

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

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