logo

Lista de matrices de Java

Jerarquía de clases Java ArrayList

Java Lista de arreglo la clase usa un dinámica formación para guardar los elementos. Es como una matriz, pero hay sin límite de tamaño . Podemos agregar o quitar elementos en cualquier momento. Por tanto, es mucho más flexible que la matriz tradicional. Se encuentra en el java.util paquete. Es como el Vector en C++.

ArrayList en Java también puede tener elementos duplicados. Implementa la interfaz List para que podamos usar todos los métodos de la interfaz List aquí. ArrayList mantiene el orden de inserción internamente.

Hereda la clase AbstractList e implementa Interfaz de lista .

Los puntos importantes sobre la clase Java ArrayList son:

  • La clase Java ArrayList puede contener elementos duplicados.
  • La clase Java ArrayList mantiene el orden de inserción.
  • La clase Java ArrayList no es sincronizado .
  • Java ArrayList permite el acceso aleatorio porque la matriz funciona según un índice.
  • En ArrayList, la manipulación es un poco más lenta que en LinkedList en Java porque es necesario que se produzcan muchos cambios si se elimina algún elemento de la lista de la matriz.
  • No podemos crear una lista de matrices de tipos primitivos, como int, float, char, etc. Es necesario utilizar la clase contenedora requerida en tales casos. Por ejemplo:
 ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine 
  • Java ArrayList se inicializa según el tamaño. El tamaño es dinámico en la lista de la matriz, que varía según los elementos que se agregan o eliminan de la lista.

Jerarquía de la clase ArrayList

Como se muestra en el diagrama anterior, la clase Java ArrayList extiende la clase AbstractList que implementa la interfaz List. La interfaz Lista amplía la Recopilación e interfaces iterables en orden jerárquico.

Declaración de clase ArrayList

Veamos la declaración de la clase java.util.ArrayList.

 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 

Constructores de ArrayList

Constructor Descripción
Lista de arreglo() Se utiliza para construir una lista de matriz vacía.
ArrayList(Colección c) Se utiliza para construir una lista de matriz que se inicializa con los elementos de la colección c.
ArrayList(capacidad interna) Se utiliza para crear una lista de matrices que tiene la capacidad inicial especificada.

Métodos de ArrayList

Método Descripción
vacío agregar (índice int, elemento E) Se utiliza para insertar el elemento especificado en la posición especificada en una lista.
booleano agregar (Y y) Se utiliza para agregar el elemento especificado al final de una lista.
booleano addAll (Colección c) Se utiliza para agregar todos los elementos de la colección especificada al final de esta lista, en el orden en que los devuelve el iterador de la colección especificada.
booleano addAll (índice int, Colección c) Se utiliza para agregar todos los elementos de la colección especificada, comenzando en la posición especificada de la lista.
vacío claro () Se utiliza para eliminar todos los elementos de esta lista.
void asegurarCapacidad (int capacidad requerida) Se utiliza para mejorar la capacidad de una instancia de ArrayList.
E obtener (índice int) Se utiliza para buscar el elemento desde una posición particular de la lista.
booleano está vacío() Devuelve verdadero si la lista está vacía; en caso contrario, falso.
Iterador()
listaIterador()
int último índice de (objeto o) Se utiliza para devolver el índice en esta lista de la última aparición del elemento especificado, o -1 si la lista no contiene este elemento.
Objeto[] toArray() Se utiliza para devolver una matriz que contiene todos los elementos de esta lista en el orden correcto.
T[] aArray(T[] a) Se utiliza para devolver una matriz que contiene todos los elementos de esta lista en el orden correcto.
Clon de objeto() Se utiliza para devolver una copia superficial de un ArrayList.
booleano contiene (Objeto o) Devuelve verdadero si la lista contiene el elemento especificado.
int indexOf(Objeto o) Se utiliza para devolver el índice en esta lista de la primera aparición del elemento especificado, o -1 si la Lista no contiene este elemento.
E eliminar (índice int) Se utiliza para eliminar el elemento presente en la posición especificada en la lista.
eliminación booleana (Objeto o) Se utiliza para eliminar la primera aparición del elemento especificado.
booleano removeAll (Colección c) Se utiliza para eliminar todos los elementos de la lista.
removeIf booleano (filtro de predicado) Se utiliza para eliminar todos los elementos de la lista que satisfacen el predicado dado.
removeRange vacío protegido (int fromIndex, int toIndex) Se utiliza para eliminar todos los elementos que se encuentran dentro del rango dado.
void replaceAll (operador UnaryOperator) Se utiliza para reemplazar todos los elementos de la lista con el elemento especificado.
void retenerTodos (Colección c) Se utiliza para conservar todos los elementos de la lista que están presentes en la colección especificada.
Conjunto E (índice int, elemento E) Se utiliza para reemplazar el elemento especificado en la lista, presente en la posición especificada.
clasificación vacía (Comparador c) Se utiliza para ordenar los elementos de la lista según el comparador especificado.
divisor divisor() Se utiliza para crear un separador sobre los elementos de una lista.
Lista subLista(int fromIndex, int toIndex) Se utiliza para recuperar todos los elementos que se encuentran dentro del rango dado.
tamaño entero() Se utiliza para devolver la cantidad de elementos presentes en la lista.
recorte vacíoToSize() Se utiliza para recortar la capacidad de esta instancia de ArrayList para que tenga el tamaño actual de la lista.

Java no genérico vs. Colección genérica

El marco de recopilación de Java no era genérico antes de JDK 1.5. Desde 1.5, es genérico.

La nueva colección genérica de Java le permite tener solo un tipo de objeto en una colección. Ahora es seguro para tipos, por lo que no es necesario encasillar en tiempo de ejecución.

Veamos el antiguo ejemplo no genérico de creación de una colección Java.

personaje en cuerda
 ArrayList list=new ArrayList();//creating old non-generic arraylist 

Veamos el nuevo ejemplo genérico de creación de una colección Java.

 ArrayList list=new ArrayList();//creating new generic arraylist 

En una colección genérica, especificamos el tipo entre llaves angulares. Ahora ArrayList se ve obligado a tener el único tipo de objeto especificado. Si intenta agregar otro tipo de objeto, obtendrá un error en tiempo de compilación .

Para obtener más información sobre los genéricos de Java, haga clic aquí Tutorial de genéricos de Java .

Ejemplo de lista de matrices de Java

Nombre del archivo: ArrayListExample1.java

 import java.util.*; public class ArrayListExample1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Printing the arraylist object System.out.println(list); } } 
Pruébalo ahora

Producción:

[Mango, Apple, Banana, Grapes] 

Iterando ArrayList usando Iterator

Veamos un ejemplo para recorrer elementos ArrayList usando la interfaz Iterator.

Nombre del archivo: ArrayListExample2.java

 import java.util.*; public class ArrayListExample2{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through Iterator Iterator itr=list.iterator();//getting the Iterator while(itr.hasNext()){//check if iterator has the elements System.out.println(itr.next());//printing the element and move to next } } } 
Pruébalo ahora

Producción:

Mango Apple Banana Grapes 

Iterando ArrayList usando bucle For-each

Veamos un ejemplo para recorrer los elementos ArrayList usando el bucle for-each

Nombre del archivo: ArrayListExample3.java

 import java.util.*; public class ArrayListExample3{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through for-each loop for(String fruit:list) System.out.println(fruit); } } 

Producción:

Pruébalo ahora
Mango Apple Banana Grapes 

Obtener y configurar ArrayList

El método obtener() devuelve el elemento en el índice especificado, mientras que el método establecer () cambia el elemento.

Nombre del archivo: ArrayListExample4.java

 import java.util.*; public class ArrayListExample4{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Mango'); al.add('Apple'); al.add('Banana'); al.add('Grapes'); //accessing the element System.out.println('Returning element: '+al.get(1));//it will return the 2nd element, because index starts from 0 //changing the element al.set(1,'Dates'); //Traversing list for(String fruit:al) System.out.println(fruit); } } 
Pruébalo ahora

Producción:

Returning element: Apple Mango Dates Banana Grapes 

Cómo ordenar la lista de matrices

El java.util El paquete proporciona una clase de utilidad. Colecciones , que tiene el método estático sort(). Utilizando el Colecciones.sort() método, podemos ordenar fácilmente ArrayList.

Nombre del archivo: SortArrayList.java

 import java.util.*; class SortArrayList{ public static void main(String args[]){ //Creating a list of fruits List list1=new ArrayList(); list1.add('Mango'); list1.add('Apple'); list1.add('Banana'); list1.add('Grapes'); //Sorting the list Collections.sort(list1); //Traversing list through the for-each loop for(String fruit:list1) System.out.println(fruit); System.out.println('Sorting numbers...'); //Creating a list of numbers List list2=new ArrayList(); list2.add(21); list2.add(11); list2.add(51); list2.add(1); //Sorting the list Collections.sort(list2); //Traversing list through the for-each loop for(Integer number:list2) System.out.println(number); } } 

Producción:

Apple Banana Grapes Mango Sorting numbers... 1 11 21 51 

Formas de iterar los elementos de la colección en Java

Hay varias formas de recorrer los elementos de la colección:

  1. Por interfaz Iterador.
  2. Por bucle para cada uno.
  3. Por la interfaz ListIterator.
  4. Por bucle.
  5. Por el método forEach().
  6. Por el método forEachRemaining().

Iterando la colección a través de las formas restantes

Veamos un ejemplo para recorrer los elementos ArrayList de otras formas.

primavera y primavera mvc

Nombre del archivo: ArrayList4.java

 import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add(&apos;Ravi&apos;);//Adding object in arraylist list.add(&apos;Vijay&apos;); list.add(&apos;Ravi&apos;); list.add(&apos;Ajay&apos;); System.out.println(&apos;Traversing list through List Iterator:&apos;); //Here, element iterates in reverse order ListIterator list1=list.listIterator(list.size()); while(list1.hasPrevious()) { String str=list1.previous(); System.out.println(str); } System.out.println(&apos;Traversing list through for loop:&apos;); for(int i=0;i<list.size();i++) { system.out.println(list.get(i)); } system.out.println('traversing list through foreach() method:'); the method is a new feature, introduced in java 8. list.foreach(a->{ //Here, we are using lambda expression System.out.println(a); }); System.out.println(&apos;Traversing list through forEachRemaining() method:&apos;); Iterator itr=list.iterator(); itr.forEachRemaining(a-&gt; //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>

Producción:

Traversing list through List Iterator: Ajay Ravi Vijay Ravi Traversing list through for loop: Ravi Vijay Ravi Ajay Traversing list through forEach() method: Ravi Vijay Ravi Ajay Traversing list through forEachRemaining() method: Ravi Vijay Ravi Ajay 

Objetos de clase definidos por el usuario en Java ArrayList

Veamos un ejemplo en el que almacenamos el objeto de clase Estudiante en una lista de matriz.

Nombre del archivo: ArrayList5.java

 class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } } 

 import java.util.*; class ArrayList5{ public static void main(String args[]){ //Creating user-defined class objects Student s1=new Student(101,&apos;Sonoo&apos;,23); Student s2=new Student(102,&apos;Ravi&apos;,21); Student s2=new Student(103,&apos;Hanumat&apos;,25); //creating arraylist ArrayList al=new ArrayList(); al.add(s1);//adding Student class object al.add(s2); al.add(s3); //Getting Iterator Iterator itr=al.iterator(); //traversing elements of ArrayList object while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+&apos; &apos;+st.name+&apos; &apos;+st.age); } } } 

Producción:

 101 Sonoo 23 102 Ravi 21 103 Hanumat 25 

Ejemplo de serialización y deserialización de Java ArrayList

Veamos un ejemplo para serializar un objeto ArrayList y luego deserializarlo.

Nombre del archivo: ArrayList6.java

 import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); try { //Serialization FileOutputStream fos=new FileOutputStream(&apos;file&apos;); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream(&apos;file&apos;); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } } 

Producción:

 [Ravi, Vijay, Ajay] 

Ejemplo de Java ArrayList para agregar elementos

Aquí vemos diferentes formas de agregar un elemento.

Nombre del archivo: ArrayList7.java

que meses son q1
 import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println(&apos;Initial list of elements: &apos;+al); //Adding elements to the end of the list al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After invoking add(E e) method: &apos;+al); //Adding an element at the specific position al.add(1, &apos;Gaurav&apos;); System.out.println(&apos;After invoking add(int index, E element) method: &apos;+al); ArrayList al2=new ArrayList(); al2.add(&apos;Sonoo&apos;); al2.add(&apos;Hanumat&apos;); //Adding second list elements to the first list al.addAll(al2); System.out.println(&apos;After invoking addAll(Collection c) method: &apos;+al); ArrayList al3=new ArrayList(); al3.add(&apos;John&apos;); al3.add(&apos;Rahul&apos;); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println(&apos;After invoking addAll(int index, Collection c) method: &apos;+al); } } 

Producción:

Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat] 

Ejemplo de Java ArrayList para eliminar elementos

Aquí vemos diferentes formas de eliminar un elemento.

Nombre del archivo: ArrayList8.java

 import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); al.add(&apos;Anuj&apos;); al.add(&apos;Gaurav&apos;); System.out.println(&apos;An initial list of elements: &apos;+al); //Removing specific element from arraylist al.remove(&apos;Vijay&apos;); System.out.println(&apos;After invoking remove(object) method: &apos;+al); //Removing element on the basis of specific position al.remove(0); System.out.println(&apos;After invoking remove(index) method: &apos;+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); //Adding new elements to arraylist al.addAll(al2); System.out.println(&apos;Updated list : &apos;+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println(&apos;After invoking removeAll() method: &apos;+al); //Removing elements on the basis of specified condition al.removeIf(str -&gt; str.contains(&apos;Ajay&apos;)); //Here, we are using Lambda expression System.out.println(&apos;After invoking removeIf() method: &apos;+al); //Removing all the elements available in the list al.clear(); System.out.println(&apos;After invoking clear() method: &apos;+al); } } 

Producción:

An initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav] After invoking remove(index) method: [Ajay, Anuj, Gaurav] Updated list : [Ajay, Anuj, Gaurav, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav] After invoking removeIf() method: [Anuj, Gaurav] After invoking clear() method: [] 

Ejemplo de Java ArrayList del método retenciónAll()

Nombre del archivo: ArrayList9.java

 import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); al.retainAll(al2); System.out.println(&apos;iterating the elements after retaining the elements of al2&apos;); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Producción:

 iterating the elements after retaining the elements of al2 Ravi 

Ejemplo Java ArrayList del método isEmpty()

Nombre del archivo: ArrayList4.java

 import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After Insertion&apos;); System.out.println(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); } } 

Producción:

Is ArrayList Empty: true After Insertion Is ArrayList Empty: false 

Ejemplo de Java ArrayList: libro

Veamos un ejemplo de ArrayList en el que agregamos libros a la lista e imprimimos todos los libros.

Nombre del archivo: ArrayListExample20.java

 import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayListExample20 { public static void main(String[] args) { //Creating list of Books List list=new ArrayList(); //Creating Books Book b1=new Book(101,&apos;Let us C&apos;,&apos;Yashwant Kanetkar&apos;,&apos;BPB&apos;,8); Book b2=new Book(102,&apos;Data Communications and Networking&apos;,&apos;Forouzan&apos;,&apos;Mc Graw Hill&apos;,4); Book b3=new Book(103,&apos;Operating System&apos;,&apos;Galvin&apos;,&apos;Wiley&apos;,6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+&apos; &apos;+b.name+&apos; &apos;+b.author+&apos; &apos;+b.publisher+&apos; &apos;+b.quantity); } } } 
Pruébalo ahora

Producción:

101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6 

Tamaño y capacidad de una ArrayList

El tamaño y la capacidad de una lista de matrices son dos términos que los principiantes encuentran confusos. Entendámoslo en esta sección con la ayuda de algunos ejemplos. Considere el siguiente fragmento de código.

Nombre del archivo: SizeCapacity.java

 import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println(&apos;The size of the array is: &apos; + al.size()); } } 

Producción:

 The size of the array is: 0 

Explicación: El resultado tiene sentido ya que no hemos hecho nada con la lista de matrices. Ahora observe el siguiente programa.

aleatorio c

Nombre del archivo: SizeCapacity1.java

 import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println(&apos;The size of the array is: &apos; + al.size()); } } 

Producción:

 The size of the array is: 0 

Explicación: Vemos que el tamaño sigue siendo 0, y la razón detrás de esto es que el número 10 representa la capacidad, no el tamaño. De hecho, el tamaño representa el número total de elementos presentes en la matriz. Como no hemos agregado ningún elemento, el tamaño de la lista de matriz es cero en ambos programas.

La capacidad representa el número total de elementos que puede contener la lista de matriz. Por lo tanto, la capacidad de una lista de matriz siempre es mayor o igual al tamaño de la lista de matriz. Cuando agregamos un elemento a la lista de la matriz, se verifica si el tamaño de la lista de la matriz ha llegado a ser igual a la capacidad o no. En caso afirmativo, entonces aumenta la capacidad de la lista de matriz. Entonces, en el ejemplo anterior, la capacidad será de 10 hasta que se agreguen 10 elementos a la lista. Cuando sumamos el 11thelemento, la capacidad aumenta. Tenga en cuenta que en ambos ejemplos, la capacidad de la lista de matriz es 10. En el primer caso, la capacidad es 10 porque la capacidad predeterminada de la lista de matriz es 10. En el segundo caso, hemos mencionado explícitamente que la capacidad de la lista de matriz La lista es 10.

Nota: No existe ningún método estándar para saber cómo aumenta la capacidad en la lista de matrices. De hecho, la forma en que aumenta la capacidad varía de una versión de GDK a otra. Por lo tanto, es necesario verificar la forma en que se implementa el código de aumento de capacidad en el GDK. No existe ningún método predefinido en la clase ArrayList que devuelva la capacidad de la lista de matrices. Por lo tanto, para una mejor comprensión, utilice el método capacidad() de la clase Vector. La lógica del tamaño y la capacidad es la misma en la clase ArrayList y en la clase Vector.

Temas relacionados

Cómo ordenar ArrayList en Java

Diferencia entre matriz y ArrayList

Cuándo usar ArrayList y LinkedList en Java

Diferencia entre ArrayList y LinkedList

Diferencia entre ArrayList y Vector

Cómo comparar dos ArrayList en Java

Cómo revertir ArrayList en Java

Cuándo usar ArrayList y LinkedList en Java

cómo ejecutar un script

Cómo hacer que ArrayList sea de solo lectura

Diferencia entre la longitud de la matriz y el tamaño () de ArrayList en Java

Cómo sincronizar ArrayList en Java

Cómo convertir ArrayList a Array y Array a ArrayList en Java

Matriz vs ArrayList en Java

Cómo ordenar Java ArrayList en orden descendente

Cómo eliminar duplicados de ArrayList en Java