看大佬的BitMap算法,记录一下。
原文:https://blog.youkuaiyun.com/pipisorry/article/details/62443757
对于大量的整数数据排序、去重、判断是否存在 贼好用。
java.util.BitSet有该算法的实现,直接来个示例:
int[] ints = new Random().ints(1, 100).limit(10).toArray();
System.out.println("生成的随机数组:" + Arrays.toString(ints));
BitSet bitSet = new BitSet(ints.length);
for(int i=0;i<ints.length;i++){
bitSet.set(ints[i]); // 把元素添加进去
}
System.out.println(" 刚构造出来的:" + bitSet.toString());
boolean b = bitSet.get(ints[1]);
System.out.println("是否存在 "+ints[1] + " = " + b);
System.out.println("移除 "+ints[1] );
bitSet.clear(ints[1]);
System.out.println(" 移除一个后的:" + bitSet.toString());
boolean b2 = bitSet.get(ints[1]);
System.out.println("是否存在 "+ints[1] + " = " + b2);
我这里为了方法打印观看,数组只给了10个元素;
可以看到把元素都添加进去后,就已经是排好序并且已去重的了;
然后判断某个元素是否存在,直接调用boolean get(int bitIndex) 就行了;
移除元素也是直接调用void clear(int bitIndex)就行。
它里面的valueOf()怎么用的还没看懂,感觉不是像上面那样初始化的,后面看懂了再说,之前慎用