【发布时间】:2015-07-09 23:58:59
【问题描述】:
将列表的前 n 个元素存储在数组中的最快方法是什么?
考虑到这个场景:
int n = 10;
ArrayList<String> in = new ArrayList<>();
for(int i = 0; i < (n+10); i++)
in.add("foobar");
选项 1:
String[] out = new String[n];
for(int i = 0; i< n; i++)
out[i]=in.get(i);
选项 2:
String[] out = (String[]) (in.subList(0, n)).toArray();
选项 3: 有更快的方法吗?也许使用 Java8 流?
【问题讨论】:
-
我预计它会因平台和 JVM 而异,您应该尝试自己进行基准测试。
-
为什么要依赖jvm?如何计算复杂度?
-
复杂性很简单。这是
O(n)。实际表现各不相同。 -
如果你查看
subList和toArray的源代码,两者基本上都在做同样的事情
标签: java arrays performance