Java 8 如何在Java8中从对象列表中收集2D数组

Java 8 如何在Java8中从对象列表中收集2D数组,java-8,Java 8,我需要一种从对象列表中收集到2D数组的方法。每个一维数组的大小为2,从Pair对象获取 class Pair { public int start; public int end; public Pair(int start, int end) { this.start = start; this.end = end; } public boolean contains(Pair pair) { return this.end >= pair.start; } pu

我需要一种从对象列表中收集到2D数组的方法。每个一维数组的大小为2,从Pair对象获取

class Pair {
public int start;
public int end;
public Pair(int start, int end) {
    this.start = start;
    this.end = end;
}
public boolean contains(Pair pair) {
    return this.end >= pair.start;
}
public int[][] convert(List<Pair> listOfPair) {
    int[][] result = listOfPair.stream().map(x -> new int[] {x.start, x.end}).collect(**??**)
}
类对{
公共int启动;
公共互联网终端;
公共对(整数开始,整数结束){
this.start=start;
this.end=end;
}
公共布尔包含(对){
返回this.end>=pair.start;
}
公共int[][]转换(列表列表空气){
int[]result=listOfPair.stream().map(x->new int[]{x.start,x.end}).collect(**??**)
}
}


我需要上面的转换方法。

您可以将数组收集到列表中,然后将其转换为数组:

return listOfPair.stream().map(x -> new int[]{x.start,
                    x.end}).collect(Collectors.toList()).toArray(new int[0][0]);
这只是将2个元素数组收集到一个列表中,然后将该列表转换为一个数组

toArray
函数分配一个具有其参数类型的新数组(在本例中为int[]),并将列表中的数据复制到该数组中。
newint[0][0]
Array.newInstance()
提供了一个类型,以允许它创建所需类型的数组

正如您在开始时知道阵列的大小一样,您可以这样做,它只有一个内存分配:

public static int[][] convert2(List<Pair> listOfPair) {
    int[][] result = new int[listOfPair.size()][2];
    int i = 0;
    for (Pair p : listOfPair) {
        result[i][0] = p.start;
        result[i++][1] = p.end;
    }
    return result;
}
publicstaticint[]convert2(List-listOfPair){
int[]result=new int[listOfPair.size()][2];
int i=0;
用于(对p:listOfPair){
结果[i][0]=p.start;
结果[i++][1]=p.end;
}
返回结果;
}
.toArray(新的int[0][0])执行什么操作?