zoukankan      html  css  js  c++  java
  • 分享知识-快乐自己: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());
        }
    }

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

  • 相关阅读:
    Math.pow
    css3正方体
    制作一个百度换肤效果
    排他思想
    js栈和堆的区别
    js创建对象的几种方式(工厂模式、构造函数模式、原型模式)
    短网址
    this
    作用域
    JS 函数基础
  • 原文地址:https://www.cnblogs.com/mlq2017/p/10290751.html
Copyright © 2011-2022 走看看