我正在尝试生成整数对-我有一个Pair类,其构造函数采用2个整数。以下代码有效,但看起来很笨拙-特别是使用mapToObj(Integer :: new)从intStream到对象流的转换。
private static List<Pair> success() {
return IntStream.range(0, 10).
mapToObj(Integer::new).flatMap(i -> IntStream.range(12, 15).
mapToObj(j -> new Pair(i, j))).
collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
首先,有人能做到这一点吗?
其次,当我重构为将某些流提取为变量时,出现错误:IllegalStateException:流已被操作或关闭。这是重构的方法-有人知道这是否是代码问题吗?
static List<Pair> fail() {
Stream<Integer> outer = IntStream.range(0, 10).mapToObj(Integer::new);
IntStream inner = IntStream.range(12, 15);
Stream<Pair> pairStream = outer.flatMap(i ->
inner.mapToObj(j -> new Pair(i, j)));
return pairStream.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)