Estoy buscando una forma muy sencilla de crear un conjunto.
Arrays.asList("a", "b" ...)
crea un List<String>
¿Hay algo similar para Set
?
java
collections
Cahen
fuente
fuente
Respuestas:
Ahora con Java 8 puedes hacer esto sin necesidad de un marco de terceros:
Ver coleccionistas .
¡Disfrutar!
fuente
Usando Guava , es tan simple como eso:
O para un conjunto mutable:
Para obtener más tipos de datos, consulte la guía del usuario de Guava
fuente
Sets.newHashSet("a", "b")
oSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
no existe con esa firma, lo sientoSet<String> mySet = ImmutableSet.of("a", "b");
Podrías usar
fuente
Para los casos especiales de conjuntos con cero o un miembro, puede utilizar:
y:
fuente
java.util.Collections.emptySet()
es, en mi opinión, preferido sobre EMPTY_SET, debido a la seguridad de tipos. De los comentarios en la clase Colecciones:Unlike the like-named field, this method is parameterized.
Como han dicho otros, use:
La razón por la que esto no existe en Java es que
Arrays.asList
devuelve una lista de tamaño fijo, en otras palabras:Devoluciones:
No existe una implementación JDK de un "tamaño fijo"
Set
dentro de laArrays
clase. ¿Por qué quieres esto? ASet
garantiza que no hay duplicados, pero si los está escribiendo a mano, no debería necesitar esa funcionalidad ... yList
tiene más métodos. Ambas interfaces amplíanCollection
yIterable
.Como han dicho otros, use guava si realmente desea esta funcionalidad, ya que no está en el JDK. Mire sus respuestas (en particular la respuesta de Michael Schmeißer) para obtener información al respecto.
fuente
En Java 9, se ha agregado una función similar a través de métodos de fábrica:
(También hay equivalentes para
List
).fuente
No, pero puedes hacerlo así
fuente
En guayaba podrías usar
newHashSet
fuente
Aquí tienes un pequeño método que puedes usar
fuente
Otra forma de hacerlo usando Java 8 y enumeraciones sería:
Ver EnumSet .
Recomendaría un análisis de desempeño entre este enfoque y
porque si tienes más de cinco elementos, el javadoc del método indica que pueden ser problemas de rendimiento como puedes ver en el javadoc de Set.Of (E, E ...) .
fuente