大量数据的集合去重-->效率

作者:巧克力er

坐标:江苏 南京

场景:
有两个数据量很大的集合 list1, list2,现在需要去掉两个集合中都存在的数据。

方法一:一个最常见的方法

public class Collex {
    public static void main(String[] args) {
        int max_len = 50000;
        ArrayList list1 = new ArrayList();
        ArrayList list2 = new ArrayList();
        for (int i=0; i list1Copy = new ArrayList(list1);
        list1.removeAll(list2);
        list2.removeAll(list1Copy);
        long end = System.currentTimeMillis();
        System.out.printf("list1 clean:%d, list2 clean:%d\n", list1.size(), list2.size());
        System.out.printf("time spent : %dms\n", end-start);
    }
}

方法一结果展示:

list1:50000, list2:50000
list1 clean:34004, list2 clean:34063
time spent : 12346ms

方法二:

public class CollectionCompire {

    public static void main(String[] args) {
        int max_len = 50000;
        ArrayList list1 = new ArrayList();
        ArrayList list2 = new ArrayList();
        for (int i=0; i set_all = new HashSet();
        for (int i=0; i set_dup = new HashSet();
        ArrayList list2_clean = new ArrayList();
        for (int i=0; i list1_clean = new ArrayList();
        for (int i=0; i

方法二结果展示:

list1:50000, list2:50000
list1 clean:21709, list2 clean:21613
time spent : 67ms

这里可以看出看来当集合的数据量达到50000的时候,方法一的耗时要远远大于方法二。

你可能感兴趣的:(大量数据的集合去重-->效率)