去除List集合中的重复值(四种好用的方法)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

最近项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。 
但是赋给set集合后,由于set集合是无序的,原先的顺序就打乱了。所以我又想着能不能用set的特性进行去重又不打乱顺序呢? 
试了一下,也是可以的,几种方法在不同情况下都有各自的优势。现在将代码写出来,比较一下。

//set集合去重,不打乱顺序public static void main(String[] args){List<String> list  =   new  ArrayList<String>(); list.add("aaa");list.add("bbb");list.add("aaa");list.add("aba");list.add("aaa");Set set = new  HashSet(); List newList = new  ArrayList(); for (String cd:list) {if(set.add(cd)){newList.add(cd);}}System.out.println( "去重后的集合: " + newList); }
//遍历后判断赋给另一个list集合public static void main(String[] args){List<String> list  =   new  ArrayList<String>(); list.add("aaa");list.add("bbb");list.add("aaa");list.add("aba");list.add("aaa");List<String> newList = new  ArrayList<String>(); for (String cd:list) {if(!newList.contains(cd)){newList.add(cd);}}System.out.println( "去重后的集合: " + newList); }
  //set去重public static void main(String[] args){List<String> list  =   new  ArrayList<String>(); list.add("aaa");list.add("bbb");list.add("aaa");list.add("aba");list.add("aaa");Set set = new  HashSet(); List newList = new  ArrayList(); set.addAll(list);newList.addAll(set);System.out.println( "去重后的集合: " + newList); }

 

  //set去重(缩减为一行)public static void main(String[] args){List<String> list  =   new  ArrayList<String>(); list.add("aaa");list.add("bbb");list.add("aaa");list.add("aba");list.add("aaa");List newList = new ArrayList(new HashSet(list)); System.out.println( "去重后的集合: " + newList); }

hashset不进行排序,还有一种方法是用treeset,去重并且按照自然顺序排列,将hashset改为treeset就可以了。(原本的顺序是改变的,只是按照字母表顺序排列而已)

 

 

//去重并且按照自然顺序排列
List newList = new ArrayList(new TreeSet(list)); 

转自:http://blog.csdn.net/cs6704/article/details/50158373

以上方法经过实际测试,似乎只对基本数据类型有效....

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery---过滤选择器

4、过滤选择器 过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素&#xff0c;过滤规则与CSS 中的伪类选择器语法相同&#xff0c;即选择器都以一个冒号(:)开头。按照不同的过滤规则&#xff0c; 过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过…

安装Frida抓包工具

curl https://bootstrap.pypa.io/get-pip.py | python3 pip install frida pip install frida-tools

正则介绍_grep

2019独角兽企业重金招聘Python工程师标准>>> 10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 grep基本用法 grep [-cinvABC] word filename centos7.x版本的grep实则为grep --colorauto-c 显示匹配到的行数[rootlocalhost ~]# cp /etc/passwd /tmp [rootl…

[国家集训队]middle

嘟嘟嘟 有谁能想到这题会用到主席树呢&#xff1f;&#xff08;不愧是WJMZBMR出的题&#xff09; 首先考虑如果区间是固定的话&#xff0c;中位数该怎么求。 没错&#xff0c;二分。如果大于当前二分值\(mid\)的数比小于\(mid\)的数多&#xff0c;说明\(mid\)还可以再变大&…

Java List<Object>去掉重复对象-java8

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 public List<String> removeStringListDupli(List<String> stringList) {Set<String> set new LinkedHashSet<&g…

Vue + webpack 项目配置化、接口请求统一管理

准备工作 需求由来&#xff1a; 当项目越来越大的时候提高项目运行编译速度、压缩代码体积、项目维护、bug修复......等等成为不得不考虑而且不得不做的问题。 又或者后面其他同事接手你的模块&#xff0c;或者改你的bug时避免人家看的眼痛以及心里千百句mamaipi...问候。 并且…

Python实现Adaboost

1.Adaboost概念 提升方法的思路是综合多个分类器&#xff0c;得到更准确的分类结果。 即“三个臭皮匠顶个诸葛亮”。《统计学习方法》称AdaBoost是提升算法的代表&#xff0c;所谓提升算法&#xff0c;指的是一种常用的统计学习方法&#xff0c;应用广泛且有效。在分类问题中&a…

Java List<T>去重方法,引用类型集合去重

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、实体类中要重写比较方法equals&#xff0c;最好也重写hashcode方法 public class WorkWeightDto implements Serializable {privat…

MyBatis知识点

一、MyBatis简介 1.1 框架概念 框架&#xff0c;就是软件的半成品&#xff0c;完成了软件开发过程中的通用操作&#xff0c;程序员只需很少或者不用进行加工就能够实现特定的功能&#xff0c;从而简化开发人员在软件开发中的步骤&#xff0c;提高开发效率。 1.2 常用框架 MVC…

android studio : clang++.exe: error: invalid linker name in argument '-fuse-ld=bfd

公司jenkins上的C编译器最近换成了clang&#xff0c;今天更新了代码发现本地的C/C代码用NDK编译不过了&#xff0c;提示&#xff1a; “clang.exe: error: invalid linker name in argument -fuse-ldbfd” 解决办法&#xff1a; 将Android.mk文件中的“LOCAL_LDFLAGS -fuse-ld…

Git知识点

一、Git简介 1.1 项目的版本管理 在项目开发过程中&#xff0c;项目没开发到一个节点就会对当前项目进行备份&#xff0c;这个备份就是项目的一个版本&#xff1b;当我们继续开发一个阶段后&#xff0c;再次进行备份&#xff0c;就生成新的版本——多个版本的集合就是项目的版…

(1)初始化项目

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;1&#xff09;初始化项目 1 使用vue-cli初始化项目 vue init webpack my-renren得到以下输出&#xff1a; ? Project name my-renren ? Project description A Vue.js project ? Author neumeng <4048…

C语言变量

C语言二进制、八进制、十六进制详解 什么是二制制? 在数学计算中&#xff0c;二进制计数系统的公分母是最小的&#xff0c;它以2为基数。你还记得在小学或中学时所学的不同的计数系统吗?笔者在上小学时&#xff0c;曾在一堂数学课中学过以6为基数的计数系统&#xff1b;你先…

Spring Data JPA - 参考文档 地址

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Spring Data JPA - 参考文档 文档地址

JS内置方法(Array)

concat() 用于连接两个或多个数组&#xff0c;该方法不会改变现有的数组&#xff0c;而是返回被连接数组的一个副本。join() 把数组中的所有元素放入一个字符串&#xff0c;元素是通过指定的分隔符进行分隔的。若省略了分隔符参数&#xff0c;则使用逗号作为分隔符。push() 向…

模切ERP和免费OA系统是互相结合提高效率

模切ERP和免费OA系统是互相结合提高效率在模切行业中&#xff0c;模切ERP在管理上的作用占了很大的比重&#xff0c;但是免费OA在管理上的地位都不容忽视的。点晴OA的核心问题是如何提高日常的办公效率问题。因此点晴OA系统里包含的功能是非常全面&#xff0c;如&#xff1a;办…

maven知识点

一、Maven简介 1.1 在项目中如何导入jar包&#xff1f; 下载jar包 &#xff08;mvn&#xff09;将下载的jar包拷贝到项目中&#xff08;WEB-INF/lib&#xff09;选择jar文件–右键–Add as Library 1.2 传统导入jar包的方式存在什么问题&#xff1f; 步骤多&#xff08;相对…

使用SpringBoot yml配置文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.上一次我们已经使用SpringBoot实现了一个简单的HelloWord程序&#xff0c;辣么接下来我们简单的使用一下他的yml格式的配置文件。 2.在…

软件行业资讯

为什么只有设计师才能发明流行的新语言 先回顾一下知名编程语言的作者和创造时间&#xff1a;Fortran 语言&#xff0c;50年代&#xff0c;IBM 研究员&#xff1b;Lisp 语言&#xff0c;50年代&#xff0c;MIT 的教授和学生&#xff1b;C语言&#xff0c;70年代&#xff0c;贝尔…

spring知识点

一、Spring概述 1.1 web项目开发中的耦合度问题 在Servlet中需要调用service中的方法&#xff0c;则需要在Servlet类中通过new关键字创建Service的实例 public interface ProductService{public List<Product> listProducts(); }public class ProductServiceImpl1 imple…