JAVA海量数据处理之二(BitMap)
import java.util.TreeSet;public class Test { public static void main(String[] args) { TreeSet set = new TreeSet(); for(long i=10000000000L;i<900000000000L;i++){ set.add(i); System.out.println("i="+i); } }}?
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space?
1024 个字节 =1KB , 1024KB=1MB , 1024MB=1GB
import java.util.BitSet;public class BitTest { public static void main(String[] args) { // 1 3 6 10 100 BitSet bitSet = new BitSet(100); bitSet.set(1,true); bitSet.set(3,true); bitSet.set(6,true); bitSet.set(100,true); for(int i=0;i<bitSet.size();i++){ boolean b = bitSet.get(i); if(b){ System.out.println(i); } } }}?
* 371M 的文件( 3000 万的数据) 过滤数据耗时 : 27375 毫秒 * 520M 的文件( 4200 万的数据) 过滤数据耗时 : 62000 毫秒
?其中把4200万的数据用BitSet操作耗时约20-30秒,写入目标文件约30秒。所以1分钟可以搞定4200万的数据。效率已经得到了极大的提高。
?
?
?
?
?
?
?