Babu Dinesh:
Me estoy haciendo la lista si ya existe y la adición de un elemento a la misma.
Fragmento de código:
Map<Integer, List<Integer>> map = new TreeMap<>(Collections.reverseOrder());
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
int factor = 0;
int num = sc.nextInt();
for (int j = 1; j <= num; j++)
if (num % j == 0) factor++; //just getting factor count of each input
map.put(factor, map.getOrDefault(factor, new ArrayList<>()).add(num)); // error line
Error de detalles:
de error: tipos incompatibles: booleano no pueden ser convertidos a la lista
¿Cómo resolver este problema?
Nzr_art:
Debido a add () tiene boolean
como tipo de retorno. No se puede poner valor booleano para mapear los cuales tienen List<Integer>
como valor.
Es necesario crear ArrayList -> añadir un elemento al primero.
Y sólo entonces se puso a un mapa como un valor:
List<Integer> list = new ArrayList<>();
list.add(num);
map.put(factor, map.getOrDefault(factor, list));
A partir de Java 9+, se puede utilizar List.of()
:
map.put(factor, map.getOrDefault(factor, List.of(num)));