哪一个使用数组列表更有效?

Raj*_*esh 6 java collections list arraylist memory-efficient

哪一个更有效地实例化列表?

List<Type> list = new ArrayList<Type>(2);
list.add(new Type("one"));
list.add(new Type("two"));
Run Code Online (Sandbox Code Playgroud)

要么

List<Type> list = Arrays.asList(new Type("one"), new Type("two"));
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 14

他们创建不同类型的对象.new ArrayList<>()创建一个java.util.ArrayList,可以添加,等等.

Arrays.asList()使用也恰好被调用的类型ArrayList,但是是嵌套类型(java.util.Arrays$ArrayList),并且不允许添加或删除元素.它只是包装一个数组.

现在,如果您不关心这些差异,最终会得到两个大致等效的实现,两者都在List<>接口中包装一个数组.我会非常惊讶地看到它们在性能上有任何显着差异 - 但是,如果您有特定的性能问题,那么您应该在特定的环境中测试它们.

  • 哇,我甚至不知道来自`Arrays.asList()`的ArrayList实际上是另一个ArrayList而不是java.util.ArrayList. (4认同)
  • 我也不知道......因为看起来两个变体的效率有所不同(至少在我的机器上).在1亿次运行中,第一个变体需要~1500 ms,第二个变体需要〜900 ms (2认同)