小编cod*_*ogs的帖子

Java 8分区列表按条件涉及前面的元素

假设我有一个间隔列表(按开始排序),我想将它们分解,以便我有一个重叠的间隔组列表.因此,例如,使用Intervalas:

public class Interval {
    private final int start;
    private final int end;

    public Interval(int start,int end){
        this.start = start;
        this.end = end;
    }

    public int getStart(){return start;}
    public int getEnd(){return end;}

    public String toString(){ return "("+start+","+end+")"; }
}
Run Code Online (Sandbox Code Playgroud)

和之List<Interval>类似:

[(0,4),(1,7),(6,10),(13,17),(20,100),(22,31),(60,65)]
Run Code Online (Sandbox Code Playgroud)

我想要一个输出List<List<Interval>>:

[[(0,4),(1,7),(6,10)],[(13,17)],[(20,100),(22,31),(60,65)]]
Run Code Online (Sandbox Code Playgroud)

我可以对此进行编码,但我真的很喜欢Java 8的功能更强大的方法,并想知道是否有任何类似于使用Java 8流的惯用方法.

我已经看过提供的收集器的"分组依据"样式,但它们似乎不适用,因为我不是真的按分类器分组 - 你不能仅根据每个属性来计算组单个元素,您必须考虑与目前已计算的组相关的每个元素的属性.

当然,在函数式语言中有非疯狂的方法(虽然我说的不是一个真正的函数式程序员:-)).如何在Java 8中使用流?

java functional-programming java-8

5
推荐指数
2
解决办法
639
查看次数

标签 统计

functional-programming ×1

java ×1

java-8 ×1