最近空闲时间去面试 , 被问了一个问题list如何去重合并 , 想了半天只想到了最繁琐的循环方法 , 顿觉丢人. 
整理一下资料供大家参考:

  1. List<String> a = new ArrayList<String>();
  2. a.add("2");
  3. a.add("4");
  4. a.add("5");
  5. a.add("6");
  6. List<String> b = new ArrayList<String>();
  7. b.add("2");
  8. b.add("3");
  9. b.add("6");
  10. b.add("7");

1.集合自带的api

这种方式看似挺方便 , 但是其底层还是遍历的去重 , 如果数据量太大还是不建议使用

  1. public static void sortListTwo(List<String> a, List<String> b) {
  2. System.out.println("removeAll***************************");
  3. a.removeAll(b);
  4. a.addAll(b);
  5. for (String str2 : a) {
  6. System.out.println(str2);
  7. }
  8. }

2.Set 方式 , 其本身就是不重复的集合

  1. public static void sortListOne(List<String> a, List<String> b) {
  2. System.out.println("HashSet****************");
  3. Set<String> set = new HashSet<String>();
  4. set.addAll(a);
  5. set.addAll(b);
  6. List<String> c = new ArrayList<String>(set);
  7. for (String str : c) {
  8. System.out.println(str);
  9. }
  10. }

3.Map 方式 , key 是唯一的

这种方式可以去重 ,但是需要遍历两个list , 还是较为繁琐

  1. public static void sortListFree(List<String> a, List<String> b) {
  2. System.out.println("Map***************************");
  3. Map<String, Object> map = new HashMap<String, Object>();
  4. for (String str : a) {
  5. map.put(str, str);
  6. }
  7. for (String str1 : b) {
  8. map.put(str1, str1);
  9. }
  10. for(Map.Entry<String , Object> entry : map.entrySet()){
  11. System.out.println(entry.getKey()+":"+entry.getValue());
  12. }
  13. }

注意:以上的几种方式都是针对的基本数据类型 , 如果是对象的话会有一些问题

分享知识-快乐自己:List 集合去重合并 , 多种方法演示的更多相关文章

  1. List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)

    1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...

  2. 【python常见面试题】之python 中对list去重的多种方法

    在python相关职位的面试过程中,会对列表list的去重进行考察.(注意有时会要求保证去重的顺序性) 1.直观方法 li=[1,2,3,4,5,1,2,3] new_li=[] for i in l ...

  3. JS009. 数组去重的多种方法总结与一步步优化

    两层for循环 这种函数的优点是兼容性好比较通用,缺点是时空复杂度都很直观的为O(n2),不利于维护和性能. var array = [1,1,'1','1'] function unique(arr ...

  4. 转:python中对list去重的多种方法

    对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 最简单的思路就是: ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ...

  5. python中对list去重的多种方法

    今天遇到一个问题,用了 itertools.groupby 这个函数.不过这个东西最终还是没用上. 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 最简单的思路就是: ...

  6. js数组去重(多种方法)

    // js数组去重 Array.prototype.fun1 = function(){ var arr = this, result = [], i, len = arr.length; for(i ...

  7. Python列表中去重的多种方法

    怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢? 去重之后顺序会改变 set去重 列表去重改变原列表的顺序了 l1 = [1,4,4,2,3,4,5,6,1] l2 = list(set( ...

  8. List集合去重

    本篇包含了两种去重,一种是List集合去重,一种是两个List集合去重合并 List集合去重,一般是两种方式,一种是遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list ...

  9. js:多种方法实现数组去重

    面试的时候数组去重要多种方法实现, 只想到一种判断重复删除的方法,而且还没写对.后来大概看了一下网上的方法. 下午想到一个网上没见过的filter方法,于是整理了一下,基于以前看到的思想,然后用了一些 ...

随机推荐

  1. root Permission denied

    w 遇见现象,原因待查

  2. ubuntu/debian gpg error no_pubkey 解决方法

    GPG error: http://ppa.launchpad.net precise Release: The following signatures couldn’t be verified b ...

  3. Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)

    https://www.jb51.net/article/49789.htm 首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,API 也许会有些不同.因为我是搭配 MySQ ...

  4. AttachThreadInput

    BOOL WINAPI AttachThreadInput( _In_  DWORD idAttach, _In_  DWORD idAttachTo, _In_  BOOL fAttach ); i ...

  5. python2 一些错误处理

    python2各种问题 pip安装django出错:python2 -m pip install django 编码问题:Unicode Decode Error ascii codec can't ...

  6. JS-排序详解:冒泡排序、选择排序和快速排序

    JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...

  7. Keras之序贯(Sequential)模型

    序贯模型(Sequential) 序贯模型是多个网络层的线性堆叠. 可以通过向Sequential模型传递一个layer的list来构造该模型: from Keras.models import Se ...

  8. pyton全栈开发从入门到放弃之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...

  9. this与super关键字总结

    Ⅰ.this 用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法.类里面也有一个引用来访问自己的属性和方法,这个引用就是 this 对象,它可以在类里面 ...

  10. 单元测试JUnit 4

    介绍   JUnit 4.x 是利用了 Java 5 的特性(Annotation)的优势,使得测试比起 3.x 版本更加的方便简单,JUnit 4.x 不是旧版本的简单升级,它是一个全新的框架,整个 ...