分享知识-快乐自己:List 集合去重合并 , 多种方法演示
最近空闲时间去面试 , 被问了一个问题list如何去重合并 , 想了半天只想到了最繁琐的循环方法 , 顿觉丢人.
整理一下资料供大家参考:
List<String> a = new ArrayList<String>();
a.add("2");
a.add("4");
a.add("5");
a.add("6");
List<String> b = new ArrayList<String>();
b.add("2");
b.add("3");
b.add("6");
b.add("7");
1.集合自带的api
这种方式看似挺方便 , 但是其底层还是遍历的去重 , 如果数据量太大还是不建议使用
public static void sortListTwo(List<String> a, List<String> b) {
System.out.println("removeAll***************************");
a.removeAll(b);
a.addAll(b);
for (String str2 : a) {
System.out.println(str2);
}
}
2.Set 方式 , 其本身就是不重复的集合
public static void sortListOne(List<String> a, List<String> b) {
System.out.println("HashSet****************");
Set<String> set = new HashSet<String>();
set.addAll(a);
set.addAll(b);
List<String> c = new ArrayList<String>(set);
for (String str : c) {
System.out.println(str);
}
}
3.Map 方式 , key 是唯一的
这种方式可以去重 ,但是需要遍历两个list , 还是较为繁琐
public static void sortListFree(List<String> a, List<String> b) {
System.out.println("Map***************************");
Map<String, Object> map = new HashMap<String, Object>();
for (String str : a) {
map.put(str, str);
}
for (String str1 : b) {
map.put(str1, str1);
}
for(Map.Entry<String , Object> entry : map.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
注意:以上的几种方式都是针对的基本数据类型 , 如果是对象的话会有一些问题
分享知识-快乐自己:List 集合去重合并 , 多种方法演示的更多相关文章
- List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)
1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...
- 【python常见面试题】之python 中对list去重的多种方法
在python相关职位的面试过程中,会对列表list的去重进行考察.(注意有时会要求保证去重的顺序性) 1.直观方法 li=[1,2,3,4,5,1,2,3] new_li=[] for i in l ...
- JS009. 数组去重的多种方法总结与一步步优化
两层for循环 这种函数的优点是兼容性好比较通用,缺点是时空复杂度都很直观的为O(n2),不利于维护和性能. var array = [1,1,'1','1'] function unique(arr ...
- 转:python中对list去重的多种方法
对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 最简单的思路就是: ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ...
- python中对list去重的多种方法
今天遇到一个问题,用了 itertools.groupby 这个函数.不过这个东西最终还是没用上. 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 最简单的思路就是: ...
- js数组去重(多种方法)
// js数组去重 Array.prototype.fun1 = function(){ var arr = this, result = [], i, len = arr.length; for(i ...
- Python列表中去重的多种方法
怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢? 去重之后顺序会改变 set去重 列表去重改变原列表的顺序了 l1 = [1,4,4,2,3,4,5,6,1] l2 = list(set( ...
- List集合去重
本篇包含了两种去重,一种是List集合去重,一种是两个List集合去重合并 List集合去重,一般是两种方式,一种是遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list ...
- js:多种方法实现数组去重
面试的时候数组去重要多种方法实现, 只想到一种判断重复删除的方法,而且还没写对.后来大概看了一下网上的方法. 下午想到一个网上没见过的filter方法,于是整理了一下,基于以前看到的思想,然后用了一些 ...
随机推荐
- ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for key
当我用SQLyog尝试修改已有记录的mysql数据表的主键为自动增长时,报出以下错误 ALTER TABLE causes auto_increment resequencing, resulting ...
- 好难忘又伤心一个非常好的学习js群解散了
不知道为什么看到web前端之天天向上这个群解散,好难过.应该可以说,这个群是我见过比较靠谱的群,大家都非常热情帮助.那些管理员管理的非常好,突然解散了.觉得好可惜,也不会因为你是菜鸟不让你加,感觉好可 ...
- tomcat和jboss的区别
1. Tomcat是Apache鼎力支持的Java Web应用服务器(注:servlet容器),由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐. 2. Jboss ...
- C#HTML与UBB(纯文本)之间的转换
private string HtmlToUBB(string _Html) { _Html = Regex.Replace(_Html,"<br ...
- Linux(4)- centos7安装python3、Linux下安装、配置virtualenv、确保开发环境的一致性、虚拟环境之virtualenvwrapper、vim
一.centos7安装python3 1.下载python3的源码包 下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz cd ...
- JDK源代码学习系列05----LinkedList
JDK源代码学习系列05----LinkedList 1.LinkedList简单介绍 LinkedList是基于双向 ...
- PAGELATCH_x和PAGEIOLATCH_x介绍
Microsoft SQL Server企业级平台管理实践 第11章 Buffer Latch Timeout的解析 什么是PAGELATCH和PAGEIOLATCH 1.PAGELATCH_x和PA ...
- SAP 后台job
SAP 如何定义后台job 有两种方 1是se38执行可执行程序后,菜单栏‘程序’--->'后台执行',输入输出设备,ENTER两次后,选择开始时间(立刻执行,或定义日期时间,也可周期执行..) ...
- lucene实现初级搜索引擎
一.系统设计 搜索引擎项目代码主要分为三个部分,第一部分是构建索引,全文检索:第二部分是输入问题,对问题进行分词.提取关键词.关键词扩展:第三部分是将搜索结果输出到GUI图形用户界面. 二.搜索引擎 ...
- SpringMVC学习大纲
PartA: 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) SpringMVC ...