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 ahoraMango 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:
- Por interfaz Iterador.
- Por bucle para cada uno.
- Por la interfaz ListIterator.
- Por bucle.
- Por el método forEach().
- 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('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); System.out.println('Traversing list through List Iterator:'); //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('Traversing list through for loop:'); 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('Traversing list through forEachRemaining() method:'); Iterator itr=list.iterator(); itr.forEachRemaining(a-> //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,'Sonoo',23); Student s2=new Student(102,'Ravi',21); Student s2=new Student(103,'Hanumat',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+' '+st.name+' '+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('Ravi'); al.add('Vijay'); al.add('Ajay'); try { //Serialization FileOutputStream fos=new FileOutputStream('file'); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream('file'); 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('Initial list of elements: '+al); //Adding elements to the end of the list al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After invoking add(E e) method: '+al); //Adding an element at the specific position al.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+al); ArrayList al2=new ArrayList(); al2.add('Sonoo'); al2.add('Hanumat'); //Adding second list elements to the first list al.addAll(al2); System.out.println('After invoking addAll(Collection c) method: '+al); ArrayList al3=new ArrayList(); al3.add('John'); al3.add('Rahul'); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println('After invoking addAll(int index, Collection c) method: '+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('Ravi'); al.add('Vijay'); al.add('Ajay'); al.add('Anuj'); al.add('Gaurav'); System.out.println('An initial list of elements: '+al); //Removing specific element from arraylist al.remove('Vijay'); System.out.println('After invoking remove(object) method: '+al); //Removing element on the basis of specific position al.remove(0); System.out.println('After invoking remove(index) method: '+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); //Adding new elements to arraylist al.addAll(al2); System.out.println('Updated list : '+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println('After invoking removeAll() method: '+al); //Removing elements on the basis of specified condition al.removeIf(str -> str.contains('Ajay')); //Here, we are using Lambda expression System.out.println('After invoking removeIf() method: '+al); //Removing all the elements available in the list al.clear(); System.out.println('After invoking clear() method: '+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('Ravi'); al.add('Vijay'); al.add('Ajay'); ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); al.retainAll(al2); System.out.println('iterating the elements after retaining the elements of al2'); 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('Is ArrayList Empty: '+al.isEmpty()); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After Insertion'); System.out.println('Is ArrayList Empty: '+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,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications and Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',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+' '+b.name+' '+b.author+' '+b.publisher+' '+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('The size of the array is: ' + 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('The size of the array is: ' + 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