我有以下代码:
List<Long> list = new ArrayList<>();
list.add(4L);
list.add(92L);
list.add(100L);
List<Long> newList = list.stream().map(i -> i * 2.5)
.mapToLong(Double::doubleToRawLongBits)
.collect(Collectors.toList());
此代码不工作,编译错误是:
方法在接口
无法应用于给定类型java中收集
。util。流动LongStream
必选:java。util。作用供应商
我已经尝试了收藏家的许多用法,但我仍然无法工作。我做错了什么?
不确定您期望的结果是什么样子,但这会生成一个List
public void test() {
List<Long> list = new ArrayList<>();
list.add(4L);
list.add(92L);
list.add(100L);
List<Long> newList = list.stream()
// Times 1.5.
.map(i -> i * 2.5)
// Grab the long bits.
.mapToLong(Double::doubleToRawLongBits)
// Box them.
.boxed()
// Make a list.
.collect(Collectors.toList());
System.out.println(newList);
}
如果您使用map
而不是mapToLong
,则应该编译此代码。(我不确定您想用douleToRawLongBits
做什么,但这至少可以编译。)
mapToLong
为您提供了一个LongStream
,它不能被收集器
收集。toList
。
这是因为
LongStream
是
原始长值元素序列
我们不能有<代码>列表
list.stream().map(i -> i * 2.5)
.mapToLong(Double::doubleToRawLongBits)
.boxed() //< I added this line
.collect(Collectors.toList());
盒装的
方法给我们一个Stream
使用
map
而不是mapToLong
也可以,因为这将导致蒸汽
list.stream().map(i -> i * 2.5)
.map(Double::doubleToRawLongBits)
.collect(Collectors.toList());
我想迭代一个对象列表。每个对象都包含一些对象的变量。更具体地说: 我的名单是: 所需的映射结构是:
我有一个HashMap,我需要使用一些函数对其进行筛选: 上述代码中的错误是变量的声明类型。应该是而不是。 所以现在的功能代码是:
我有一个嵌套的映射,其中key是员工名称,values是另一个映射,其中key是公司名称,value是经验年数,如下所示 现在我的函数应该返回一个映射,以员工姓名为键,以总经验为值。我如何使用java流(在单个流中)做到这一点
给定诸如之类的流, 我怎样才能最优雅地将它转换成给定的形式: (当然,假设我定义了类对)? 编辑:这不是严格的关于int或基元流。对于任何类型的流,答案都应该是通用的。
但是,此修复: 有没有更优雅的方式这样做?
所以我试图使用Java8流Collectors.toMap添加元素到新创建的Map。 要创建的映射可能包含其某些键的空值。这对于HashMap来说是完全可以接受的,当我使用stream forEach添加成员时,它会按预期工作: msgRouteProps是一个映射,其中键和值都是非空的。请注意,ReflectionUtil。getNamedMethod()调用可能会返回null,我希望将其放入结