将列表的前 n 个元素放入数组的最快方法

新手上路,请多包涵

将列表的前 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 流?

原文由 Joel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 582
2 个回答

选项 1 比选项 2 快

因为选项2创建了一个新的 List 引用,然后从 List 创建了一个 n 元素数组(选项1完美地调整了输出数组的大小)但是,首先您需要修复一个错误。使用 < (不是 <= )。喜欢,

 String[] out = new String[n];
for(int i = 0; i < n; i++) {
    out[i] = in.get(i);
}

原文由 Elliott Frisch 发布,翻译遵循 CC BY-SA 3.0 许可协议

假设:

列表 - 列表 <String>

使用 Java 8 流,

  • 将列表中的前 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]);

原文由 src3369 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题