J'ai un attribut this.sudoku
qui est un int[9][9]
tableau. Je dois obtenir une colonne de cela dans un ensemble.
Set<Integer> sudoku_column = IntStream.range(0, 9)
.map(i -> this.sudoku[i][column])
.collect(Collectors.toSet());
J'attends les valeurs des colonnes dans cet ensemble. mais il dit que Collectors.toSet()
ne peut pas être appliquée à cette fonction Collect dans la chaîne. Quelqu'un peut -il expliquer pourquoi?
IntStream#map
consume un IntUnaryOperator
qui représente une opération sur un seul opérande une valeur int- qui produit un résultat d'une valeur int- donc le résultat est IntStream
cependant IntStream
n'a pas la collect
surcharge que vous êtes la tentative d'utilisation, ce qui signifie que vous avez deux options; à savoir soit l' utilisation IntStream#collect
:
IntStream.range(0, 9)
.collect(HashSet::new, (c, i) -> c.add(sudoku[i][column]), HashSet::addAll);
ou utiliser mapToObj
pour transformer à partir IntStream
de Stream<Integer>
laquelle vous pouvez ensuite appeler .collect(Collectors.toSet())
à.
IntStream.range(0, 9)
.mapToObj(i -> this.sudoku[i][column])
.collect(Collectors.toSet());