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 ...
随机推荐
- nested exception is java.lang.StackOverflowError解析
背景介绍: 项目是微服务的,使用docker容器,使用jenkins部署.测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了. 报错如下: 是栈溢出了,一般 ...
- MyBatis框架——快速入门
主流的ORM框架(帮助开发者实现数据持久化工作的框架): 1.MyBatis: 半自动化ORM框架,半自动:指框架只完成一部分功能,剩下的工作仍需开发者手动完成. MyBatis 框架没有实现 POJ ...
- Journal of Proteomics Research | 利用混合蛋白质组模型对MBR算法中错误转移鉴定率的评估
题目:Evaluating False Transfer Rates from the Match-between-Runs Algorithm with a Two-Proteome Model 期 ...
- Python编写“求一元二次方程的解”
#求一元二次方程的解 import math def equation(a,b,c): h=b*b-4*a*c #一元二次方程的解,百度来的 if h>=0: x1=(-b+math.sqrt( ...
- Selenium系列(三) - 针对元素常见的简单操作
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- 解决WSL在执行32位程序时报错“Exec format error”的问题
当你尝试在WSL上运行32位的程序时,shell将会报错:cannot execute binary file: Exec format error. 这是因为WSL目前暂不支持32位的ELF可执行文 ...
- 使用Jenkins与Docker持续集成与发布NetCore项目(实操篇)
使用Jenkins与Docker持续集成与发布NetCore项目(教程一) 原文地址:https://www.cnblogs.com/Jackyye/p/12588182.html 基本环境 该教程的 ...
- 如何定时备份Mysql数据库
1.创建备份数据库存储目录 cd data/db mkdir backup #创建存储目录 2.添加备份脚本 vim backupdb.sh #创建脚本文件 脚本内容如下: #!/bin/sh db_ ...
- 高数解题神器:拍照上传就出答案,这个中国学霸做的AI厉害了 | Demo
一位叫Roger的中国学霸小哥的拍照做题程序mathAI一下子火了,这个AI,堪称数学解题神器. 输入一张包含手写数学题的图片,AI就能识别出输入的数学公式,然后给出计算结果. 不仅加减乘除基本运算, ...
- Windows 7系统记录
http://www.winwin7.com/ win7带USB3.0和NVME驱动 http://www.mohuishou.com/ 其中的青苹果家园 支持UEFI+GPT机器 http://ww ...