【发布时间】:2016-01-08 23:35:48
【问题描述】:
我有这个:
long hnds[] = new long[133784560]; // 133 million
然后我快速填充数组(几毫秒),然后我想知道唯一(即不同)值的数量。现在,我什至不需要这个实时,我只需要尝试几个变体,看看每个变体有多少唯一值。
我试过了,例如这个:
import org.apache.commons.lang3.ArrayUtils;
....
HashSet<Long> length = new HashSet<Long>(Arrays.asList(ArrayUtils.toObject(hnds)));
System.out.println("size: " + length.size());
等待半小时后出现堆空间错误(我有 Xmx4000m)。
我也尝试初始化 Long[] hnds 而不是 long[] hnds,但是数组的初始填充需要很长时间。或者例如在添加值时从一开始就使用 Set ,但它也需要永远。有没有办法计算 long[] 数组的不同值而无需永远等待?如果必须的话,我会以某种方式将其写入文件。
【问题讨论】:
标签: java performance hashset