将字符串流转换为Longs流

时间:2015-08-24 16:25:33

标签: java java-8 java-stream

我想要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());

1 个答案:

答案 0 :(得分:10)

解决方案非常简单。只需要使用Long::valueOf

List<Long> longs = strings.stream().map(Long::valueOf).collect(Collectors.toList());