Zak Zak:
Tengo un Hashmap de <Integer, Set<Integer>>.
Estoy dispuesto a conseguir el conjunto que tiene el tamaño máximo utilizando el funcionamiento corriente de java.
Aquí está mi ejemplo:
public class Example {
public static void main( String[] args ) {
Map<Integer,Set<Integer>> adj = new HashMap<>();
Set<Integer> set1 = Stream.of(1,2,3).collect(Collectors.toSet());
Set<Integer> set2 = Stream.of(1,2).collect(Collectors.toSet());
adj.put(1,set1);
adj.put(2,set2);
}
}
He intentado esto:
Collections.max(adj,Comparator.comparingInt(Set::size));
Pero estoy un error de compilación porque el método size () en la interfaz Set no es estática.
Normalmente deberíamos obtener 3 como el conjunto de tamaño máximo.
Ousmane D .:
No se puede utilizar una Map<Integer,Set<Integer>>
con Collection.max
. como se le define como teniendo una colección.
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
Así que, para que funcione, ya sea hacer:
Collections.max(adj.values(), Comparator.comparingInt(Set::size));
o una corriente de:
adj.values()
.stream()
.max(Comparator.comparingInt(Set::size));