Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要设置的多维数组的收集列_Java_Java 8_Set_Java Stream_Collectors - Fatal编程技术网

Java 要设置的多维数组的收集列

Java 要设置的多维数组的收集列,java,java-8,set,java-stream,collectors,Java,Java 8,Set,Java Stream,Collectors,我有一个属性this.sudoku,它是一个int[9][9]数组。 我需要把这一列放到一个集合中 Set<Integer> sudoku_column = IntStream.range(0, 9) .map(i -> this.sudoku[i][column]) .collect(Collectors.toSet());

我有一个属性
this.sudoku
,它是一个
int[9][9]
数组。 我需要把这一列放到一个集合中

Set<Integer> sudoku_column = IntStream.range(0, 9)
                                      .map(i -> this.sudoku[i][column])
                                      .collect(Collectors.toSet());
Set sudoku\u column=IntStream.range(0,9)
.map(i->this.sudoku[i][column])
.collect(收集器.toSet());
我希望在这个集合中有一个列值。但是它说,
Collectors.toSet()
不能应用于链中的这个collect函数。有人能解释为什么吗?

使用
IntUnaryOperator
,它表示对单个int值操作数的操作,该操作产生int值结果,因此结果是
IntStream
,但是,
IntStream
没有您试图使用的
collect
重载,这意味着您有两个选项;i、 e.任何一种用途:

或者使用
mapToObj
IntStream
转换为
Stream
,然后可以调用
.collect(Collectors.toSet())

IntStream.range(0, 9)
        .mapToObj(i -> this.sudoku[i][column])
        .collect(Collectors.toSet());
获取一个函数,该函数用于将一个
int
转换为另一个
int

如果你想继续做一件事,没关系。但是,如果需要将流收集到
集合
,则需要将数据流转换为装箱的
int
s,a,by

collector.toSet()
不能应用于链中的此
collect
函数


Collectors.toSet()
返回一个
收集器
,该收集器与
IntStream
中单个
收集器(供应商、ObjIntConsumer、双消费者)的签名不符。尽管如此,它仍然适用于。

收集到一套时要小心。除了回答中解释的
mapToObj
错误外,
Collectors.toSet()
返回的
Set
实现不会对其元素施加顺序。因此,您可能会丢失行的顺序,即返回集的第一个元素与对应于第一行的元素不匹配。您最好收集到
列表中。
IntStream.range(0, 9)
        .mapToObj(i -> this.sudoku[i][column])
        .collect(Collectors.toSet());
.map(i -> this.sudoku[i][column])
.boxed()
.collect(Collectors.toSet());