Cómo hacer una nueva lista en Java

Resuelto user93796 asked hace 15 años • 25 respuestas

Creamos un Setcomo:

Set myset = new HashSet()

¿Cómo creamos un Listen Java?

user93796 avatar May 13 '09 22:05 user93796
Aceptado
List myList = new ArrayList();

o con genéricos ( Java 7 o posterior)

List<MyType> myList = new ArrayList<>();

o con genéricos (versiones antiguas de Java)

List<MyType> myList = new ArrayList<MyType>();
Dan Vinton avatar May 13 '2009 15:05 Dan Vinton

Además, si desea crear una lista que contenga elementos (aunque tendrá un tamaño fijo):

List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");
Aaron Maenpaa avatar May 13 '2009 15:05 Aaron Maenpaa

Permítanme resumir y agregar algo:

JDK

1. new ArrayList<String>();
2. Arrays.asList("A", "B", "C")

Guayaba

1. Lists.newArrayList("Mike", "John", "Lesly");
2. Lists.asList("A","B", new String [] {"C", "D"});

Lista inmutable

1. Collections.unmodifiableList(new ArrayList<String>(Arrays.asList("A","B")));
2. ImmutableList.builder()                                      // Guava
            .add("A")
            .add("B").build();
3. ImmutableList.of("A", "B");                                  // Guava
4. ImmutableList.copyOf(Lists.newArrayList("A", "B", "C"));     // Guava

Lista inmutable vacía

1. Collections.emptyList();
2. Collections.EMPTY_LIST;

Lista de personajes

1. Lists.charactersOf("String")                                 // Guava
2. Lists.newArrayList(Splitter.fixedLength(1).split("String"))  // Guava

Lista de números enteros

Ints.asList(1,2,3);                                             // Guava
Sergii Shevchyk avatar May 29 '2013 19:05 Sergii Shevchyk

En Java 8

Para crear una lista no vacía de tamaño fijo (no se admiten operaciones como agregar, eliminar, etc.):

List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported

Para crear una lista mutable no vacía:

List<Integer> list = new ArrayList<>(Arrays.asList(3, 4));

En Java 9

Usando nuevos List.of(...)métodos de fábrica estáticos:

List<Integer> immutableList = List.of(1, 2);

List<Integer> mutableList = new ArrayList<>(List.of(3, 4));

En Java 10

Usando la inferencia de tipo de variable local :

var list1 = List.of(1, 2);

var list2 = new ArrayList<>(List.of(3, 4));

var list3 = new ArrayList<String>();

Y siga las mejores prácticas...

No uses tipos crudos

Desde Java 5, los genéricos han sido parte del lenguaje; debes usarlos:

List<String> list = new ArrayList<>(); // Good, List of String

List list = new ArrayList(); // Bad, don't do that!

Programa para interfaces

Por ejemplo, programe en la Listinterfaz:

List<Double> list = new ArrayList<>();

En lugar de:

ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!
Oleksandr Pyrohov avatar Feb 07 '2018 21:02 Oleksandr Pyrohov

Primero lee esto , luego lee esto y esto . 9 de cada 10 veces utilizarás una de esas dos implementaciones.

De hecho, basta con leer la Guía de Sun sobre el marco de colecciones .

Adam Jaskiewicz avatar May 13 '2009 15:05 Adam Jaskiewicz

Desde Java 7, tienes 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:

List<String> list = new ArrayList<>();

Una lista de tamaño fijo se puede definir como:

List<String> list = Arrays.asList("foo", "bar");

Para listas inmutables puedes usar la biblioteca Guava :

List<String> list = ImmutableList.of("foo", "bar");
Vitalii Fedorenko avatar Nov 21 '2011 14:11 Vitalii Fedorenko