java交集retainAll 和 Sets.intersection 性能比较

package com.qxy.test.services.facade;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import java.util.List;

public class TestMain {

public static void intersection(int length1,int length2) {
List<Integer> list1 = Lists.newLinkedList();
for (int i = 0 ;i < length1; i++){
list1.add(i);
}

List<Integer> list2 = Lists.newLinkedList();
for (int i = 0 ;i < length2; i++){
list2.add(i);
}

long start = System.currentTimeMillis();
list1.retainAll(list2);
long end = System.currentTimeMillis();
System.out.println("list.retainAll 消耗时间(数量:"+ length1 +"):" + (end - start));

long start1 = System.currentTimeMillis();
Sets.intersection(ImmutableSet.copyOf(list1),
ImmutableSet.copyOf(list2));
long end1 = System.currentTimeMillis();
System.out.println("Sets.intersection消耗时间(数量:"+ length2 +"):" + (end1 - start1));
}

public static void main(String[] args) {
int[] array = {10,100,1000,5000,10000,50000,100000};
for (int i = 0 ;i<array.length; i++){
intersection(array[i],array[i]);
}
System.out.println("两个结果集不一样--------------------------");
for (int i = 0 ; i < array.length; i++){
intersection(array[i],array[i]/10);
}
System.out.println("两个结果集不一样--------------------------");
for (int i = 0 ; i < array.length; i++){
intersection(array[i]/10,array[i]);
}
}
}

 结果如下:

list.retainAll 消耗时间(数量:10):1
Sets.intersection消耗时间(数量:10):52
list.retainAll 消耗时间(数量:100):1
Sets.intersection消耗时间(数量:100):0
list.retainAll 消耗时间(数量:1000):7
Sets.intersection消耗时间(数量:1000):1
list.retainAll 消耗时间(数量:5000):51
Sets.intersection消耗时间(数量:5000):1
list.retainAll 消耗时间(数量:10000):177
Sets.intersection消耗时间(数量:10000):3
list.retainAll 消耗时间(数量:50000):3486
Sets.intersection消耗时间(数量:50000):6
list.retainAll 消耗时间(数量:100000):11931
Sets.intersection消耗时间(数量:100000):5
两个结果集不一样--------------------------
list.retainAll 消耗时间(数量:10):0
Sets.intersection消耗时间(数量:1):0
list.retainAll 消耗时间(数量:100):0
Sets.intersection消耗时间(数量:10):0
list.retainAll 消耗时间(数量:1000):0
Sets.intersection消耗时间(数量:100):0
list.retainAll 消耗时间(数量:5000):5
Sets.intersection消耗时间(数量:500):1
list.retainAll 消耗时间(数量:10000):19
Sets.intersection消耗时间(数量:1000):0
list.retainAll 消耗时间(数量:50000):492
Sets.intersection消耗时间(数量:5000):0
list.retainAll 消耗时间(数量:100000):2033
Sets.intersection消耗时间(数量:10000):0
两个结果集不一样--------------------------
list.retainAll 消耗时间(数量:1):0
Sets.intersection消耗时间(数量:10):0
list.retainAll 消耗时间(数量:10):0
Sets.intersection消耗时间(数量:100):0
list.retainAll 消耗时间(数量:100):0
Sets.intersection消耗时间(数量:1000):0
list.retainAll 消耗时间(数量:500):0
Sets.intersection消耗时间(数量:5000):0
list.retainAll 消耗时间(数量:1000):1
Sets.intersection消耗时间(数量:10000):0
list.retainAll 消耗时间(数量:5000):24
Sets.intersection消耗时间(数量:50000):2
list.retainAll 消耗时间(数量:10000):102
Sets.intersection消耗时间(数量:100000):1

Read the fucking manual and source code
原文地址:https://www.cnblogs.com/qxynotebook/p/9556743.html