我的问题是将包含无符号整数的巨大文本文件(UTF-8 -1byte(ANSI))在升序中没有重复项放入数组中。快速地!所以我打算这样做:
while(scan.hasNextInt()) x.add(scan.nextInt());
但是,无论我使用 ArrayList、Vectors 还是包含数百万个整数的文件的普通数组,明智的做法是确定避免以后增加数组大小所需的最大容量。
使用 File.length() 我将获得文件中的位数 + 换行符。
在最坏的情况下,它会从 0 开始,并且在每一行中只增加 1。
我认为最大值。容量可以使用组合数学计算,但我处于死胡同。较小的数字不会被零(002)填充的事实不知何故让我失望。
考虑到第一个 Int 的大小,我认为一个也可以更接近实际数量。
所以我最重要的问题是计算所需的近似 [in O(1)] 最大容量。
此外,考虑到这个相当独特的问题,我问我自己 scan.hasNextInt() 和 scan.nextInt() 是否是最快的,如果通过线程并行化可以更快地加快进程(考虑到从硬盘读取的特性可能不是)。
问候光环