Creamos un Set
como:
Set myset = new HashSet()
¿Cómo creamos un List
en Java?
java
list
collections
usuario93796
fuente
fuente
Respuestas:
o con genéricos ( Java 7 o posterior)
o con genéricos (versiones antiguas de Java)
fuente
Además, si desea crear una lista que contenga elementos (aunque será de tamaño fijo):
fuente
Déjame resumir y agregar algo:
JDK
Guayaba
Lista inmutable
Lista inmutable vacía
Lista de personajes
Lista de enteros
fuente
Ints.asList
no crea una lista inmutable, sino una lista de tamaño fijo respaldada por una matriz dada de entradas (es decir, es compatibleList.set(int, Object)
). El segundo ejemplo de "Lista de caracteres inmutables" tampoco es inmutable (eliminaría esa línea).En Java 8
Para crear una lista no vacía de tamaño fijo (no se admiten operaciones como agregar, eliminar, etc.):
Para crear una lista mutable no vacía:
En Java 9
Usando nuevos
List.of(...)
métodos estáticos de fábrica:En Java 10
Uso de la inferencia de tipo de variable local :
Y siga las mejores prácticas ...
No uses tipos crudos
Desde Java 5, los genéricos han sido parte del lenguaje; debe usarlos:
Programa para interfaces
Por ejemplo, programe en la
List
interfaz:En vez de:
fuente
Primero lea esto , luego lea esto y esto . 9 de cada 10 veces usará una de esas dos implementaciones.
De hecho, solo lea la Guía de Sun para el marco de Colecciones .
fuente
ArrayList
. Si solo estoy trabajando con los extremos de una lista, es una deque (o cola) y uso laArrayDeque
implementación. La razón es que, aunque las implementaciones basadas en matrices pueden desperdiciar algo de memoria en ranuras vacías (cuando no puedo predecir la capacidad necesaria), para pequeñas colecciones esto es comparable a la sobrecarga de todas las instancias de nodo en una lista vinculada ( o deque). Y a cambio, obtengo acceso aleatorio. ¿Qué beneficio únicoLinkedList
proporciona?fuente
Desde Java 7, tiene inferencia de tipos para la creación de instancias genéricas , por lo que no es necesario duplicar parámetros genéricos en el lado derecho de la asignación:
Una lista de tamaño fijo se puede definir como:
Para listas inmutables, puede usar la biblioteca Guava :
fuente
List es solo una interfaz como Set .
Al igual que HashSet es una implementación de un conjunto que tiene ciertas propiedades con respecto a agregar / buscar / eliminar el rendimiento, ArrayList es la implementación básica de una lista.
Si echa un vistazo a la documentación de las interfaces respectivas, encontrará "Todas las clases de implementación conocidas" y podrá decidir cuál es la más adecuada para sus necesidades.
Lo más probable es que sea ArrayList .
fuente
List
es una interfaz comoSet
y tieneArrayList
yLinkedList
como implementaciones de propósito general .Podemos crear Lista como:
También podemos crear una lista de tamaño fijo como:
Casi siempre estaríamos usando
ArrayList
opuestos a laLinkedList
implementación:LinkedList
usa mucho espacio para objetos y funciona mal cuando tenemos muchos elementos.LinkedList
requiere tiempo O (n) en comparación con O (1) enArrayList
.La lista creada
Arrays.asList
anteriormente no puede modificarse estructuralmente, pero sus elementos aún pueden modificarse.Java 8
Según el documento , el método
Collections.unmodifiableList
devuelve una vista no modificable de la lista especificada. Podemos obtenerlo como:Java 9
En caso de que estemos usando Java 9, entonces:
Java 10
En caso de que estemos en Java 10, el método
Collectors.unmodifiableList
devolverá una instancia de lista verdaderamente inmodificable introducida en Java 9. Verifique esta respuesta para obtener más información sobre la diferencia entreCollections.unmodifiableList
vsCollectors.unmodifiableList
en Java 10 .fuente
A veces, pero muy raramente, en lugar de una nueva ArrayList, es posible que desee una nueva LinkedList. Comience con ArrayList y si tiene problemas de rendimiento y evidencia de que la lista es el problema, y si agrega y elimina mucho a esa lista, luego, no antes, cambie a LinkedList y vea si las cosas mejoran. Pero en general, quédate con ArrayList y todo estará bien.
fuente
O con genéricos
Por supuesto, puede reemplazar la cadena con cualquier tipo de variable, como Integer, también.
fuente
Un ejemplo:
Puede consultar la lista de javadoc y encontrar todas las clases de implementación conocidas de la
List
interfaz que se incluyen con la API de Java.fuente
Con Google Collections , puede usar los siguientes métodos en la clase Listas
Hay sobrecargas para la inicialización de varargs y la inicialización de un
Iterable<T>
.La ventaja de estos métodos es que no necesita especificar el parámetro genérico explícitamente como lo haría con el constructor; el compilador lo inferirá del tipo de la variable.
fuente
Necesitas importar
List
yArrayList
.fuente
Más opciones para hacer lo mismo con Java 8, no mejor, no peor, solo diferente y si desea hacer un trabajo adicional con las listas, Streams le proporcionará más alternativas (filtro, mapa, reducción, etc.)
fuente
Con Java 9, puede hacer lo siguiente para crear un elemento inmutable
List
:fuente
Como opción, puede usar la inicialización de doble llave aquí:
fuente
Hay muchas formas de crear un Conjunto y una Lista. HashSet y ArrayList son solo dos ejemplos. También es bastante común usar genéricos con colecciones en estos días. Te sugiero que eches un vistazo a lo que son
Esta es una buena introducción para las colecciones integradas de Java. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
fuente
Es mejor que use genéricos como se sugiere a continuación:
En caso de que use LinkedList.
fuente
Con Eclipse Collections puedes crear una lista como esta:
Si quieres una lista inmutable:
Puede evitar el auto-boxeo utilizando listas primitivas. Así es como crearías listas int:
Hay variantes para las 8 primitivas.
Nota: Soy un committer para Eclipse Collections.
fuente
Las siguientes son algunas formas en que puede crear listas.
Esto creará una lista con un tamaño fijo, no es posible agregar / eliminar elementos, arrojará un
java.lang.UnsupportedOperationException
si intenta hacerlo.La siguiente versión es una lista simple donde puede agregar / eliminar cualquier número de elementos.
Esta es la forma de crear un
LinkedList
archivo in java. Si necesita hacer una inserción / eliminación frecuente de elementos en la lista, debe usar enLinkedList
lugar deArrayList
fuente
Arrays.asList("Male", "Female")
.Prueba esto:
O:
fuente
Si necesita una lista inmutable serializable con una sola entidad que puede usar:
fuente
Como la declaración de la lista de matriz en java es como
Hay muchas formas de crear e inicializar la lista de matrices en Java.
fuente