Joe*_*oel 32 java arrays performance
获取存储在数组中的列表的前n个元素的最快方法是什么?
将此视为场景:
int n = 10;
ArrayList<String> in = new ArrayList<>();
for(int i = 0; i < (n+10); i++)
in.add("foobar");
Run Code Online (Sandbox Code Playgroud)
选项1:
String[] out = new String[n];
for(int i = 0; i< n; i++)
out[i]=in.get(i);
Run Code Online (Sandbox Code Playgroud)
选项2:
String[] out = (String[]) (in.subList(0, n)).toArray();
Run Code Online (Sandbox Code Playgroud)
选项3: 有更快的方法吗?也许使用Java8-streams?
src*_*369 41
假设:
列表 - 列表<String>
使用Java 8 Streams,
将列表中的前N个元素放入列表中,
List<String> firstNElementsList = list.stream().limit(n).collect(Collectors.toList());
将列表中的前N个元素转换为数组,
String[] firstNElementsArray = list.stream().limit(n).collect(Collectors.toList()).toArray(new String[n]);
因为选项2创建了一个新List
引用,然后n
从List
(选项1完美地调整输出数组的大小)创建一个元素数组.但是,首先你需要修复一个bug.使用<
(不<=
).喜欢,
String[] out = new String[n];
for(int i = 0; i < n; i++) {
out[i] = in.get(i);
}
Run Code Online (Sandbox Code Playgroud)