我有一个 List<String>
,我想将其转换为 List<Long>
。 在 Java 8 之前,我会通过循环遍历 List<String>
,将每个 String
转换为 Long
并将其添加到新的 List<Long>
中,如下所示。
List<String> strings = /* get list of strings */;
List<Long> longs = new ArrayList<>();
for (final String string : strings) {
longs.add(Long.valueOf(string));
}
然而,我需要使用Java 8流来完成这个转换,因为这个转换是更大的流操作的一部分。我已经把 List<String>
转换成流,就像我执行了 strings.stream()
。那么,我该如何执行这个转换,类似于下面的代码。
List<String> strings = /* get list of strings */;
List<Long> longs = strings.stream().map(/*convert to long*/).collect(Collectors.toList());
Long::valueOf
”。既然你有时间做这件事,就拿这个作为例子:Java中何时需要使用“Locale”来解析日期时间字符串?。例如:这篇文章可以解释一般情况下从“Collection<A>”到“Collection<B>”的转换方式,.map
的作用以及Collectors.toXXX()
如何确定目标集合类型。 - TomLong.valueOf
转换为Long::valueOf
不是每个了解方法引用的人都能发现,但它值得有自己的问答吗?真的吗? - Holger.map
和Collectors.toXXX()
的工作原理,答案可能会更好。如果你有时间做到这一点,那就可以通过'编辑'链接或'发布你的答案'按钮来实现。这样做比批评我发布可能有助于某人的内容更值得花费时间。 - Andrew Mairose