小编Bar*_*une的帖子

使用Java 8流生成整数对

我正在尝试生成整数对-我有一个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)

java lambda java-8 java-stream

5
推荐指数
1
解决办法
4930
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

lambda ×1