Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
Convertir un conjunto a mapa en Java

Tengo un conjunto y quiero convertirlo en mapa para usarlo más tarde en Maps.difference() de guayaba. Solo me importan las llaves en la diferencia.
Se me ocurrió esta versión:

 private <T> Map<T, T> toMap(Set<T> set) { return set.stream().collect(Collectors.toMap(Function.identity(), Function.identity())); }

Sin embargo, sé que, por lo general, un conjunto tiene un campo de respaldo de mapa. Este es el método que uso para crear el mapa:

 public static <E> Set<E> newConcurrentHashSet() { return Collections.newSetFromMap(new ConcurrentHashMap<E, Boolean>()); }

Dado que solo necesito las claves, pensé que tal vez podría obtener una vista de este campo de alguna manera. ¿alguna idea?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Terminé con una solución de una línea bastante sencilla con Java 8 de la siguiente manera:

 Map<String, Foo> map = fooSet.stream().collect(Collectors.toMap(Foo::getKey, e -> e));
  • fooSet es un conjunto de objetos de tipo Foo, es decir, Set<Foo> fooSet
  • Foo tiene un getter llamado getKey que devuelve una cadena
about 4 years ago · Santiago Trujillo Denunciar

0

Puede convertir un Set en un Map (misma clave y valor tomados de elementos de Set ) como se muestra a continuación:

 private <T> Map<T, T> toMap(Set<T> set) { Map<T, T> map = new ConcurrentHashMap<>(); set.forEach(t -> map.put(t, t));//contains same key and value pair return map; }
about 4 years ago · Santiago Trujillo Denunciar

0

Mejora de la respuesta del desarrollador :

 Map<String, Foo> map = fooSet.stream().collect(Collectors.toMap(Foo::getKey, Function.identity()));

o si importa estáticamente Collectors.toMap y Function.identity :

 Map<String, Foo> map = fooSet.stream().collect(toMap(Foo::getKey, identity()));
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda