从TXT到Array的升序整数



我的问题是获得巨大的文本文件(UTF-8 -1byte (ANSI)),其中包含无符号整数,没有重复的升序进入数组。快!所以我写的是:

while(scan.hasNextInt()) x.add(scan.nextInt());

但是,无论我使用ArrayList, Vectors还是包含数百万个整数的普通数组,确定所需的最大容量以避免以后增加数组大小都是明智的。

使用File.length(),我将获得文件中数字+换行符的数量。

在最坏的情况下,它将从0开始,每行只增加1。
我想是最大值。容量是可以用组合学计算出来的,但我在一个死胡同里。较小的数字不被0(002)填充的事实不知怎么让我感到困惑。

考虑到第一个Int的大小,我认为人们也可以进一步接近实际数量。

所以我最重要的问题是计算一个近似的[in O(1)]所需的最大容量。

此外,我在问我自己scan.hasNextInt()和scan.nextInt()是否考虑到这个相当独特的问题是最快的,如果通过线程并行化可以加快进程甚至更多(考虑到从硬盘驱动器读取的功能可能不是)。

的问候光环

假设只有一个字节用于分隔两个数字(例如:A 'n')我们有

  • 10位1位数字-> 20字节
  • 90个2位数字-> 270字节
  • 900个3位数字-> 3600字节
  • …你会得到模式

如果你的文件大小现在是1000字节,你可以拥有的最大是10个1位数,90个2位数,剩下710个3位数。710/4 = 177.5,最多10+90+177 = 277。

相关内容

  • 没有找到相关文章

最新更新