我可以使用 Java 8 的 stream() 将一组非原始项转换为列表吗? [复制]
Posted
技术标签:
【中文标题】我可以使用 Java 8 的 stream() 将一组非原始项转换为列表吗? [复制]【英文标题】:Can i convert an array of non-primitive items to a List using Java 8's stream()? [duplicate] 【发布时间】:2020-12-08 05:21:05 【问题描述】:我在这里看到的大多数示例都解释了如何将基元数组转换为 ArrayList。
是否可以使用 stream() 将非基元数组转换为 ArrayList?
如果没有,是否有一个实用程序可以做同样的事情?
【问题讨论】:
有可能,只需搜索您的特定类型,您也会在 *** 上找到相关的重复项。 这能回答你的问题吗? 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 这正是我所说的。该链接问题的前提是错误……
【参考方案1】:
答案当然是:
String[] array = ...;
List<String> list = List.of(array);
你提到'使用流()' - 嗯,为什么?流是一种工具。对于这份工作,这有点像在问:“嘿,我可以用鞋钉钉子……吗?”。我想,也许吧?如果您要跑步,鞋子很棒,但在尝试固定钉子时不合适。用锤子。
但如果你想……当然……Arrays.stream(array).collect(Collectors.toList());
,但这是更多的打字,更慢,更少的惯用语,基本上在所有方面都更糟。
【讨论】:
A shoe…or a glass bottle以上是关于我可以使用 Java 8 的 stream() 将一组非原始项转换为列表吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 org.w3c.dom.NodeList 与 Java 8 Stream API 一起使用?