我需要一个基本类型(double)的集合/数组。
在应用程序启动期间,我将仅一次向列表/数组添加元素。 在程序运行时,不会删除元素。 我知道我永远不需要遍历整个数组,只需要通过索引访问元素。 我也不需要并发。
基于内存友好和更好的性能考虑,哪种方式更优-原始数组或ArrayList
/ArrayDeque
/...?
我需要一个基本类型(double)的集合/数组。
在应用程序启动期间,我将仅一次向列表/数组添加元素。 在程序运行时,不会删除元素。 我知道我永远不需要遍历整个数组,只需要通过索引访问元素。 我也不需要并发。
基于内存友好和更好的性能考虑,哪种方式更优-原始数组或ArrayList
/ArrayDeque
/...?
double
数组比使用 Double
的集合(装箱的 double
)更快。如果您有固定大小并且想要按索引获取元素,则使用数组会很有优势。
此外,它具有获得连续内存分配的优点,因此后来的GC不必像在Collections中那样进行压缩的艰苦工作(除了ArrayList)。
MutableDoubleList
转换为ImmutableDoubleList
。 这将有修剪集合的效果,同时使其不可变。Random random = new Random();
MutableDoubleList list =
random.doubles(10000, 0.0, 100.0)
.collect(
DoubleLists.mutable::empty,
MutableDoubleList::add,
MutableDoubleList::addAll);
ImmutableDoubleList immutableDoubleList = list.toImmutable();
Assert.assertEquals(10000, immutableDoubleList.size());
System.out.println(immutableDoubleList.count(d -> d > 80.0d));
System.out.println(immutableDoubleList.get(0));
System.out.println(immutableDoubleList.get(99));
System.out.println(immutableDoubleList.get(999));
System.out.println(immutableDoubleList.get(9999));