【问题标题】:Can i convert an array of non-primitive items to a List using Java 8's stream()? [duplicate]我可以使用 Java 8 的 stream() 将一组非原始项转换为列表吗? [复制]
【发布时间】:2020-12-08 05:21:05
【问题描述】:

我在这里看到的大多数示例都解释了如何将基元数组转换为 ArrayList。

是否可以使用 stream() 将非基元数组转换为 ArrayList?

如果没有,是否有一个实用程序可以做同样的事情?

【问题讨论】:

  • 有可能,只需搜索您的特定类型,您也会在 Stackoverflow 上找到相关的重复项。
  • 这能回答你的问题吗? Converting array to list in Java
  • 一般 SO 问题:这确实是“将数组转换为 Java 中的列表”的副本。但是,该答案的获胜答案有 1400 票,而且现在是 2020 年,因此误导它几乎是错误的(Arrays.asList 有缺点,例如半不可变和半可变,给您提供了两者中最差的属性,现在有更干净的 List.of)。那么如何解决这个问题呢?找到 1400 人投反对票?似乎对回答者不公平,因为在他们写它的时候,那是体面的。
  • @rzwitserloot 这些缺点不会使答案无效。如果您想要一个无复制的解决方案,Arrays.asList(…) 仍然是解决方案,其局限性是不可避免的。当然,如果该答案记录了这些问题,那就太好了。但请注意,这个答案实际上是在回答一个不同的问题,即关于将 int[] 转换为 List 的前提是错误的前提是使用 Arrays.asList 在 Java 5 之前有效。
  • @rzwitserloot 这正是我所说的。该链接问题的前提是错误……

标签: java java-8


【解决方案1】:

答案当然是:

String[] array = ...;
List<String> list = List.of(array);

你提到'使用流()' - 嗯,为什么?流是一种工具。对于这份工作,这有点像在问:“嘿,我可以用鞋钉钉子……吗?”。我想,也许吧?如果您要跑步,鞋子很棒,但在尝试固定钉子时不合适。用锤子。

但如果你想……当然……Arrays.stream(array).collect(Collectors.toList());,但这是更多的打字,更慢,更少的惯用语,基本上在所有方面都更糟。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-03-28
  • 2019-12-06
  • 1970-01-01
  • 2020-03-07
  • 2014-07-18
  • 2018-11-07
相关资源
最近更新 更多