采用BitMap从20亿个int正整数中找出相同的数字
所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间。
public class Test { //为了方便,假设数据是以数组的形式给我们的 public static Set<Integer> test(int[] arr) { //用来把重复的数返回,存在Set里,这样避免返回重复的数。 Set<Integer> output = new HashSet<>(); BitSet bitSet = new BitSet(Integer.MAX_VALUE); int i = 0; while (i < arr.length) { int value = arr[i]; //存在就添加到集合中 if (bitSet.get(value)) { output.add(value); } else { bitSet.set(value, true); } i++; } return output; } public static void main(String[] args) { int[] t = {1,2,3,4,5,6,7,8,3,4}; Set<Integer> t2 = test(t); System.out.println(t2); } }