La lista de Java es una colección ordenada. La lista de Java es una interfaz que extiende la interfaz Collection. La lista de Java proporciona control sobre la posición donde se puede insertar un elemento. Puedes acceder a los elementos por su índice y también buscar elementos en la lista.
Lista de Java
Algunos de los puntos importantes sobre la lista de Java son;
- La interfaz Lista de Java es un miembro del Marco de Colecciones de Java.
- La lista te permite agregar elementos duplicados.
- La lista te permite tener elementos ‘null’.
- La interfaz Lista tiene muchos métodos predeterminados en Java 8, por ejemplo replaceAll, sort y spliterator.
- Los índices de la lista comienzan desde 0, al igual que los arrays.
- La lista admite genéricos y debemos usarlos siempre que sea posible. Usar genéricos con List evitará ClassCastException en tiempo de ejecución.
Diagrama de Clase de Lista de Java
La interfaz de lista de Java extiende la interfaz de colección. La interfaz de colección extiende la interfaz Iterable. Algunas de las clases de implementación de lista más utilizadas son ArrayList, LinkedList, Vector, Stack, CopyOnWriteArrayList. AbstractList proporciona una implementación esquelética de la interfaz de lista para reducir el esfuerzo en la implementación de la lista.
Métodos de lista de Java
Algunos de los métodos útiles de la lista de Java son;
- int size(): para obtener el número de elementos en la lista.
- boolean isEmpty(): para verificar si la lista está vacía o no.
- boolean contains(Object o): Devuelve true si esta lista contiene el elemento especificado.
- Iterator<E> iterator(): Devuelve un iterador sobre los elementos de esta lista en secuencia adecuada.
- Object[] toArray(): Devuelve un array que contiene todos los elementos de esta lista en secuencia adecuada
- boolean add(E e): Añade el elemento especificado al final de esta lista.
- boolean remove(Object o): Elimina la primera aparición del elemento especificado de esta lista.
- boolean retainAll(Collection<?> c): Retiene solo los elementos de esta lista que están contenidos en la colección especificada.
- void clear(): Elimina todos los elementos de la lista.
- E get(int index): Returns the element at the specified position in the list.
- E set(int index, E element): Replaces the element at the specified position in the list with the specified element.
- ListIterator<E> listIterator(): Devuelve un iterador de lista sobre los elementos de la lista.
- List<E> subList(int fromIndex, int toIndex): Devuelve una vista de la porción de esta lista entre el fromIndex especificado, inclusive, y toIndex, exclusivo. La lista devuelta está respaldada por esta lista, por lo que los cambios no estructurales en la lista devuelta se reflejan en esta lista, y viceversa.
Algunos de los métodos predeterminados agregados a List en Java 8 son;
- default void replaceAll(UnaryOperator<E> operator): Reemplaza cada elemento de esta lista con el resultado de aplicar el operador a ese elemento.
- default void sort(Comparator<super E> c): Ordena esta lista de acuerdo con el orden inducido por el Comparador especificado.
- default Spliterator<E> spliterator(): Crea un Spliterator sobre los elementos de esta lista.
Java Array to List
Podemos usar la clase Arrays para obtener la vista de un array como lista. Sin embargo, no podremos realizar ninguna modificación estructural a la lista, ya que arrojará java.lang.UnsupportedOperationException. Por lo tanto, la mejor manera es usar un bucle for para crear la lista iterando sobre el array. A continuación se muestra un ejemplo simple que muestra cómo convertir un array de Java a una lista correctamente.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] vowels = {"a","e","i","o","u"};
List vowelsList = Arrays.asList(vowels);
System.out.println(vowelsList);
/**
* List is backed by array, we can't do structural modification
* Both of the below statements will throw java.lang.UnsupportedOperationException
*/
//vowelsList.remove("e");
//vowelsList.clear();
//usando un bucle for para copiar elementos del array a la lista, seguro para la modificación de la lista
List myList = new ArrayList<>();
for(String s : vowels){
myList.add(s);
}
System.out.println(myList);
myList.clear();
}
}
Elija cualquiera de los métodos anteriores según los requisitos de su proyecto.
Java Lista a Array
A simple example showing the correct way to convert a list to array.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List letters = new ArrayList();
// agregar ejemplo
letters.add("A");
letters.add("B");
letters.add("C");
// convertir lista a array
String[] strArray = new String[letters.size()];
strArray = letters.toArray(strArray);
System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]"
}
}
Ordenar Lista en Java
Hay dos formas de ordenar una lista. Podemos usar la clase Collections para ordenación natural o podemos usar el método sort() de la lista y utilizar nuestro propio Comparator para la ordenación. A continuación se muestra un ejemplo simple para la ordenación de listas en Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class ListSortExample {
public static void main(String[] args) {
List ints = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000));
// ordenación natural usando la clase Collections
Collections.sort(ints);
System.out.println("Natural Sorting: "+ints);
// Mi ordenación personalizada, orden inverso
ints.sort((o1,o2) -> {return (o2-o1);});
System.out.println("Reverse Sorting: "+ints);
}
}
A sample output is given below. Since I am using Random for generating list elements, it will be different every time.
Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939]
Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]
Operaciones Comunes en Listas de Java
Las operaciones más comunes realizadas en una lista de Java son agregar, eliminar, establecer, limpiar, obtener el tamaño, etc. A continuación, se muestra un ejemplo simple de lista en Java que muestra el uso común de métodos.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListExample {
public static void main(String args[]) {
List vowels= new ArrayList();
//ejemplo de agregar
vowels.add("A");
vowels.add("I");
//vamos a insertar E entre A e I
vowels.add(1,"E");
System.out.println(vowels);
List list = new ArrayList();
list.add("O");list.add("U");
//añadiendo elementos de lista a las letras
vowels.addAll(list);
System.out.println(vowels);
//ejemplo de limpiar para vaciar la lista
list.clear();
//ejemplo de tamaño
System.out.println("letters list size = "+vowels.size());
//ejemplo de establecer
vowels.set(2, "E");
System.out.println(vowels);
//ejemplo de sublista
vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O");
list = vowels.subList(0, 2);
System.out.println("letters = "+vowels+", list = "+list);
vowels.set(0, "A");
System.out.println("letters = "+vowels+", list = "+list);
list.add("U");
System.out.println("letters = "+vowels+", list = "+list);
}
}
La salida del programa de ejemplo de lista de Java anterior es;
[A, E, I]
[A, E, I, O, U]
letters list size = 5
[A, E, E, O, U]
letters = [E, E, I, O], list = [E, E]
letters = [A, E, I, O], list = [A, E]
letters = [A, E, U, I, O], list = [A, E, U]
Iterador de lista de Java
A continuación, se muestra un ejemplo simple que muestra cómo iterar sobre una lista en Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListIteratorExample {
public static void main(String[] args) {
List list = new ArrayList<>();
for(int i=0; i<5; i++) list.add(i);
Iterator iterator = list.iterator();
//iteración simple
while(iterator.hasNext()){
int i = (int) iterator.next();
System.out.print(i + ", ");
}
System.out.println("\n"+list);
//modificación de la lista usando el iterador
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next();
if(x%2 ==0) iterator.remove();
}
System.out.println(list);
//cambiando la estructura de la lista mientras se itera
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next(); //ConcurrentModificationException here
if(x==1) list.add(10);
}
}
}
La salida del programa de iterador de lista de Java anterior es;
0, 1, 2, 3, 4,
[0, 1, 2, 3, 4]
[1, 3]
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at com.journaldev.examples.ListIteratorExample.main(ListIteratorExample.java:34)
Eso es todo para un resumen rápido sobre List en Java. Espero que estos ejemplos de List en Java te ayuden a empezar con la programación de colecciones de Listas.
Source:
https://www.digitalocean.com/community/tutorials/java-list