Pregunta Cómo hacer una nueva lista en Java


Creamos un Set como:

Set myset = new HashSet()

¿Cómo creamos un List en Java?


605
2018-05-13 15:12


origen


Respuestas:


List myList = new ArrayList();

o con genéricos (Java 7 o después)

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

o con genéricos (versiones antiguas de Java)

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

800
2018-05-13 15:15



Además, si desea crear una lista que tenga elementos (aunque será de tamaño fijo):

List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");

372
2018-05-13 15:18



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 vacía inmutable

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 enteros

Ints.asList(1,2,3);                                             // Guava

148
2018-05-29 19:48



Primera lectura esta, Entonces lee esta y esta. 9 veces de cada 10 usarás una de esas dos implementaciones.

De hecho, solo lea La guía de Sun para el marco de las colecciones.


31
2018-05-13 15:17



//simple example creating a list form a string array

String[] myStrings = new String[] {"Elem1","Elem2","Elem3","Elem4","Elem5"};

List mylist = Arrays.asList(myStrings );

//getting an iterator object to browse list items

Iterator itr= mylist.iterator();

System.out.println("Displaying List Elements,");

while(itr.hasNext())

  System.out.println(itr.next());

22
2018-05-13 15:26



Desde Java 7 tienes escriba inferencia para la creación genérica de instancias, por lo que no es necesario duplicar los parámetros genéricos en el lado derecho de la tarea:

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, puede usar Guayaba biblioteca:

List<String> list = ImmutableList.of("foo", "bar");

21
2017-11-21 14:53



Lista es solo una interfaz igual que Conjunto.

Al igual que HashSet es una implementación de un conjunto que tiene ciertas propiedades en cuanto a agregar / buscar / eliminar el rendimiento, ArrayList es la implementación simple 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 Lista de arreglo.


20
2018-05-13 15:55



En Java 8

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

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 un nuevo List.of(...) métodos estáticos de fábrica:

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

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

Y sigue las mejores prácticas ...

No use tipos crudos

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

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

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

Programa a las interfaces

Por ejemplo, programe al List interfaz:

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

En lugar de:

ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!

16
2018-02-07 21:12



List es una interfaz como Set y tiene ArrayList y LinkedList como implementaciones de uso general.

Podemos crear la lista como:

 List<String> arrayList = new ArrayList<>();
 List<String> linkedList = new LinkedList<>(); 

También podemos crear una lista de tamaño fijo como:

List<String> list = Arrays.asList("A", "B", "C");

Casi siempre estaríamos usando ArrayList oposición a LinkedList implementación:

  1. LinkedList usa mucho espacio para objetos y funciona mal cuando tenemos muchos elementos.
  2. Cualquier operación indexada en LinkedList requiere O (n) tiempo en comparación con O (1) en ArrayList.
  3. Mira esto enlazar para más información.

La lista creada por Arrays.asList arriba no se puede modificar estructuralmente pero sus elementos aún se pueden modificar. Si queremos una verdadera lista inmutable, podemos envolverla como sigue:

Collections.unmodifiableList(Arrays.asList("A", "B", "C"));

O en caso de que estemos usando Java 9 entonces:

List<String> list = List.of("A", "B");

13
2018-06-22 06:06



List list = new ArrayList();

O con genéricos

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

Por supuesto, puede reemplazar cadena con cualquier tipo de variable, como Integer, también.


9
2018-05-13 15:15



Algunas 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 ​​una gran cantidad de agregar y eliminar a esa lista, entonces, no antes, cambie a una Lista Vinculada y vea si las cosas mejoran. Pero en general, quédate con ArrayList y todo estará bien.


8
2018-05-13 15:29