java消除 list重复值及交集,并集,差集
消除 list重复值
- public void removeDuplicate(List list) {
- HashSet h = new HashSet(list);
- list.clear();
- list.addAll(h);
- }
交集:
- list.retainAll(Arrays.asList(arr)); // list 中的就是交集了 arr为数组
差集:
- list1.removeAll(list2);
并集:
- list1.addAll(list2);
- removeDuplicate(list1);//前面所提的清除重复值
Java处理List中的重复值有两种方法,一种是经处理后得到新的无序list,另外一种则保留list原有的顺序。
方法一:使用Hastset的hashcode方法判断是否重复,数据不会重复,但顺序会变
- package array;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.List;
- public class ListOnlyValue_1 {
- public static void main(String[] args) {
- List<String> mylist = new ArrayList<String>();
- mylist.add("test");
- mylist.add("ab");
- mylist.add("cd");
- mylist.add("ab");
- mylist.add("sd");
- mylist.add("ab");
- mylist.add("cd");
- mylist.add("xyz");
- System.out.println("处理前的list:" + mylist);
- mylist = removeDuplicate(mylist);
- System.out.println("处理后的list:" + mylist);
- }
- public static List<String> removeDuplicate(List<String> list){
- HashSet<String> hashSet = new HashSet<String>(list);
- list.clear();
- list.addAll(hashSet);
- return list;
- }
- }
代码运行结果如下:
- 处理前的list:[test, ab, cd, ab, sd, ab, cd, xyz]
- 处理后的list:[test, sd, ab, xyz, cd]
方法二:通过Hashset的add方法判断是否已经添加过相同的数据,如果已存在相同的数据则不添加,维持list中元素原有的顺序。
- package array;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.List;
- public class ListOnlyValue_2 {
- public static void main(String[] args) {
- List<String> mylist = new ArrayList<String>();
- mylist.add("test");
- mylist.add("ab");
- mylist.add("cd");
- mylist.add("ab");
- mylist.add("sd");
- mylist.add("ab");
- mylist.add("cd");
- mylist.add("xyz");
- System.out.println("处理前的list:" + mylist);
- mylist = removeDuplicateWithOrder(mylist);
- System.out.println("处理后的list:" + mylist);
- }
- public static List<String> removeDuplicateWithOrder(List<String> list) {
- HashSet<String> hashSet = new HashSet<String>();
- List<String> newlist = new ArrayList<String>();
- for (Iterator iterator = list.iterator(); iterator.hasNext();) {
- String element = (String) iterator.next();
- if (hashSet.add(element)) {
- newlist.add(element);
- }
- }
- list.clear();
- list.addAll(newlist);
- return list;
- }
- }
代码运行结果如下:
- 处理前的list:[test, ab, cd, ab, sd, ab, cd, xyz]
- 处理后的list:[test, ab, cd, sd, xyz]
该方法运用了HashSet的add属性,若HashSet中已存在某元素,add方法是不会再将此元素add到HashSet中的,正是运用此原理,当HashSet能add一个元素时,newlist也跟着add一个元素,这样就得到一个维持原有顺序的没有重复值的新list。
java消除 list重复值及交集,并集,差集的更多相关文章
- (java/javascript) list 交集 并集 差集 去重复并集
java list 交集 并集 差集 去重复并集 package com; import java.util.ArrayList; import java.util.Iterator; import ...
- 如何求ArrayList集合的交集 并集 差集 去重复并集
需要用到List接口中定义的几个方法: addAll(Collection<? extends E> c) :按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾 ...
- Python 求两个文本文件以行为单位的交集 并集 差集
Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r') ...
- spark之交集并集差集拉链
spark之交集并集差集拉链 def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster(&qu ...
- java 两个list 交集 并集 差集 去重复并集
前提需要明白List是引用类型,引用类型采用引用传递. 我们经常会遇到一些需求求集合的交集.差集.并集.例如下面两个集合: List<String> list1 = new ArrayLi ...
- java list 交集 并集 差集 去重复并集
package com; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public clas ...
- java List交集 并集 差集 去重复并集
首先定义两个list List list1 =new ArrayList(); list1.add("); list1.add("); list1.add("); Lis ...
- LINQ操作数组(交集,并集,差集,最值,平均,去重复)
数组是大学里经常拿来做算法练习的对象.一些经典算法非常有价值,考试.装逼.面试都十分有用.但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上. 下面 ...
- java list 去除 重复值
一: Hastset根据hashcode判断是否重复,数据不会重复 Java代码 /** List order not maintained **/ public static void remove ...
随机推荐
- Natas33 Writeup(Phar反序列化漏洞)
Natas33: 又是一个上传文件的页面,源码如下: // graz XeR, the first to solve it! thanks for the feedback! // ~morla cl ...
- ASP.NET Core - 在ActionFilter中使用依赖注入
上次ActionFilter引发的一个EF异常,本质上是对Core版本的ActionFilter的知识掌握不够牢固造成的,所以花了点时间仔细阅读了微软的官方文档.发现除了IActionFilter.I ...
- Uncovering thousands of new peptides with sequence-mask-search hybrid de novo peptide sequencing framework (使用序列掩码搜索结合肽段从头测序框架发现了数千个新肽段)-解读人:刘佳维
期刊名:Molecular & Cellular Proteomics 发表时间:(2019年12月) IF:4.828 单位: 朱拉隆功大学 费城威斯塔研究所 物种:人 技术:de novo ...
- hdu1532 最大流板子题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目给出源点和漏点,还有一些边,要求源与漏之间的最大流,我采用了Edmonds Karp算法,该 ...
- 从数据结构分析mysql为何使用B+tree
理解mysql为何选择升级版的二叉树,就需要对各种常用的二叉树进行对比.B+Tree是一种特殊的二叉树,本质上也算二叉树.自然会满足二叉树的一般特性. 比如,比节点数据大的在右边,节点数据小的在左边. ...
- 牛客网剑指offer【Python实现】——part1
斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,n<=39). 循环实现,时间复杂度n def Fibonacci(self, ...
- MySQL数据库参数调优方法
怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据 ...
- (note)从小白到产品经理之路
学习了云课堂的产品课程,整理出部分笔记,以作备用参考,方便实际运用过程中查看巩固. 1.产品工具:Axure.mindmanager.viso.办公软件wps 2.产品人需要具备的品格 富有同理心,习 ...
- SpringBoot 集成多数据源
一个项目中怎么划分数据库,可以通过具体业务需求. 项目中数据源怎么如何划分,通过注解的方式@Datasource(ref="") 在方法上指定,会连接指定的数据源,这种方式比较繁琐 ...
- C# 便捷实现可迭代对象间的赋值
目录 都是迭代,为啥我一定要用foreach 如果换成是字典呢? 关于 foreach 都是迭代,为啥我一定要用foreach 问题起源于本人的一个练手的扑克牌程序:洗完牌之后要发给场上的三人. ...