zoukankan      html  css  js  c++  java
  • java List去重方式及效率对比

     

    对List去重并保证添加顺序主要有三种方式:

    方式一,利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件:

    private static void removeDuplicate(List<String> list) {
        HashSet<String> set = new HashSet<String>(list.size());
        List<String> result = new ArrayList<String>(list.size());
        for (String str : list) {
            if (set.add(str)) {
                result.add(str);
            }
        }
        list.clear();
        list.addAll(result);
    }

    方式二,利用LinkedHashSet不能添加重复数据并能保证添加顺序的特性 :

    private static void removeDuplicate(List<String> list) {
        LinkedHashSet<String> set = new LinkedHashSet<String>(list.size());
        set.addAll(list);
        list.clear();
        list.addAll(set);
    }

    方式三,利用List的contains方法循环遍历:

    private static void removeDuplicate(List<String> list) {
        List<String> result = new ArrayList<String>(list.size());
        for (String str : list) {
            if (!result.contains(str)) {
                result.add(str);
            }
        }
        list.clear();
        list.addAll(result);
    }

    准备测试程序:

    private static void main(String[] args) {
        final List<String> list = new ArrayList<String>();
        for (int i = 0; i < 1000; i++) {
            list.add("haha-" + i);
        }
    
        long time = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            removeDuplicate(list);
        }
        long time1 = System.currentTimeMillis();
        System.out.println("time1:"+(time1-time));
    
        for (int i = 0; i < 10000; i++) {
            removeDuplicate2(list);
        }
        long time2 = System.currentTimeMillis();
        System.out.println("time2:"+(time2-time1));
    
        for (int i = 0; i < 10000; i++) {
            removeDuplicate3(list);
        }
        long time3 = System.currentTimeMillis();
        System.out.println("time3:"+(time3-time2));
    
    }
  • 相关阅读:
    How to configure security of ActiveMQ ?
    CentOS 搭建 nginx + tomcat
    25个 Git 进阶技巧
    写给Git初学者的7个建议
    my links
    Shell scripts to Create a local dir base on the time.
    81For全栈技术网
    一款可视化的在线制作H5
    在线制作h5
    在线制作h5——上帝的礼物
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/9845591.html
Copyright © 2011-2022 走看看