colonne de collecte de tableau multidimensionnel de set

poivron :

J'ai un attribut this.sudokuqui 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?

Ousmane D. :

IntStream#mapconsume un IntUnaryOperatorqui 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 IntStreamcependant IntStreamn'a pas la collectsurcharge 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 mapToObjpour transformer à partir IntStreamde Stream<Integer>laquelle vous pouvez ensuite appeler .collect(Collectors.toSet())à.

IntStream.range(0, 9)
        .mapToObj(i -> this.sudoku[i][column])
        .collect(Collectors.toSet());

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=184194&siteId=1
conseillé
Classement