问题描述
选项1比选项2快
因为选项2创建了一个新List
引用,然后n
从中创建了一个元素数组List
(选项1完美调整了输出数组的大小)。但是,首先您需要通过一个错误来解决此问题。使用<
(不是<=
)。喜欢,
String[] out = new String[n];
for(int i = 0; i < n; i++) {
out[i] = in.get(i);
}
解决方法
获取存储在数组中的列表的前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流?