首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将长整型列表转换为双精度型列表

将长整型列表转换为双精度型列表
EN

Stack Overflow用户
提问于 2020-01-21 15:24:20
回答 5查看 766关注 0票数 3

我是Streams的新手,我有一个长值列表。我想使用stream将长值列表转换为双精度值列表。

代码如下:

代码语言:javascript
复制
List<Long> list = new ArrayList<>();
list.add(4L);
list.add(92L);
list.add(100L);

我想将列表转换为List<double>。谢谢

EN

回答 5

Stack Overflow用户

发布于 2020-01-21 15:26:19

您必须使用map操作符将Long转换为Double,然后使用toList收集器。

代码语言:javascript
复制
List<Double> doubleValues = list.stream()
    .map(Double::valueOf)
    .collect(Collectors.toList());

相反,如果您担心自动装箱的开销,您可以创建一个double数组。这是它看起来的样子。

代码语言:javascript
复制
double[] doubleArr = list.stream().mapToDouble(v -> v).toArray();
票数 6
EN

Stack Overflow用户

发布于 2020-01-21 15:28:13

代码语言:javascript
复制
List<Double> collect1 = list.stream()
          .mapToDouble(s -> s) // DoubleStream
          .boxed()  // Stream<Double>
          .collect(Collectors.toList());  //collected to List<Double>

注意:boxing()是开销。

另一种方式,没有boxing()

代码语言:javascript
复制
List<Double> listDouble = new ArrayList<>();
list.stream().mapToDouble(s->s).forEach(k->listDouble.add(k));
票数 3
EN

Stack Overflow用户

发布于 2020-01-21 15:28:44

试着做这样的事情:

代码语言:javascript
复制
List<Double> doubles = list.stream()
         .map(e -> Double.valueOf(e))
         .collect(Collectors.toList());

解释

代码语言:javascript
复制
list.stream().

这使您可以创建(并迭代)一个流。

代码语言:javascript
复制
map(e -> Double.valueOf(e))

您遍历的每个(长)元素都将被映射到一个双精度

代码语言:javascript
复制
.collect(Collectors.toList());

这会将它映射到一个List<Double>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59836013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档