Tengo un atributo this.sudoku
que es una int[9][9]
matriz. Necesito conseguir una columna de esta en un conjunto.
Set<Integer> sudoku_column = IntStream.range(0, 9)
.map(i -> this.sudoku[i][column])
.collect(Collectors.toSet());
Espero un valores de las columnas en este conjunto. pero dice que Collectors.toSet()
no se puede aplicar a esta función a cobro revertido en la cadena. ¿Puede alguien explicar por qué?
IntStream#map
consume una IntUnaryOperator
que representa una operación en un solo operando int de valor que produce un resultado int-valorada por lo tanto el resultado es una IntStream
, sin embargo IntStream
no tiene la collect
sobrecarga que eres intento de uso, lo que significa que tiene un par de opciones; es decir, ya sea para uso IntStream#collect
:
IntStream.range(0, 9)
.collect(HashSet::new, (c, i) -> c.add(sudoku[i][column]), HashSet::addAll);
o utilizar mapToObj
para transformar a partir IntStream
de Stream<Integer>
la que a continuación, puede llamar .collect(Collectors.toSet())
al.
IntStream.range(0, 9)
.mapToObj(i -> this.sudoku[i][column])
.collect(Collectors.toSet());