我正在尝试创建一个Map,键的值从1到N,并且每个kesys的值都是恒定的-
SELECT new MyDTO(o.prop1, o.prop2) FROM Object o
这种结构给我错误。
答案 0 :(得分:1)
IntStream.rangeClosed()
返回IntStream
而不返回Stream<Integer>
。 IntStream
是int
s的原始流。要将IntStream
转换为Stream<Integer>
,您需要在流中调用IntStream.boxed()
:
private Map<Integer, Integer> getInitialDistMap(int N) {
Function<Integer, Integer> constant = x -> Integer.MAX_VALUE;
return IntStream.rangeClosed(1, N).boxed()
.collect(Collectors.toMap(Function.identity(), constant));
}
答案 1 :(得分:1)
rangeClosed
将返回IntStream
,IntStream
上唯一可用的collect方法是
<R> R collect(Supplier<R> supplier,ObjIntConsumer<R> accumulator, BiConsumer<R,R> combiner)
因此,使用boxed()
返回Stream<Integers>
整数流,然后收集到Map
Stream<Integer> boxed()
返回一个包含此流元素的流,每个元素都装在整数中。
解决方案
IntStream.rangeClosed(1, N).boxed().collect(Collectors.toMap(Function.identity(), constant));