logo

Interfaz de lista en Java con ejemplos

La interfaz List en Java proporciona una forma de almacenar la colección ordenada. Es una interfaz secundaria de Recopilación . Es una colección ordenada de objetos en los que se pueden almacenar valores duplicados. Dado que List conserva el orden de inserción, permite el acceso posicional y la inserción de elementos.

Tabla de contenidos

Interfaz de lista en Java

La interfaz Lista se encuentra en el paquete java.util y hereda la interfaz Colección. Es una fábrica de la interfaz ListIterator. A través de ListIterator, podemos iterar la lista hacia adelante y hacia atrás. Las clases de implementación de la interfaz List son ArrayList, LinkedList, Stack y Vector. ArrayList y LinkedList se utilizan ampliamente en la programación Java. La clase Vector está en desuso desde Java 5.



Lista y ArrayList en el marco de la colección Java

Declaración de interfaz de lista de Java

public interface List extends Collection ;>

Profundicemos en la creación de objetos o instancias en una clase Lista. Desde Lista es un interfaz , no se pueden crear objetos de la lista de tipos. Siempre necesitamos una clase que implemente esto. Lista para crear un objeto. Y también, tras la introducción de Genéricos en Java 1.5, es posible restringir el tipo de objeto que se puede almacenar en la Lista. Al igual que muchas otras 'interfaces' definidas por el usuario implementadas por 'clases' definidas por el usuario, Lista es una “interfaz”, implementada por el Lista de arreglo clase, predefinida en java.util paquete.

Sintaxis de la lista de Java

Este tipo de lista segura se puede definir como:

List list = new ArrayList ();>

Nota: Obj es el tipo de objeto que se almacenará en la Lista

Ejemplo de lista de Java

Java




// Java program to Demonstrate List Interface> > // Importing all utility classes> import> java.util.*;> > // Main class> // ListDemo class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an object of List interface> >// implemented by the ArrayList class> >List l1 =>new> ArrayList();> > >// Adding elements to object of List interface> >// Custom inputs> > >l1.add(>0>,>1>);> >l1.add(>1>,>2>);> > >// Print the elements inside the object> >System.out.println(l1);> > >// Now creating another object of the List> >// interface implemented ArrayList class> >// Declaring object of integer type> >List l2 =>new> ArrayList();> > >// Again adding elements to object of List interface> >// Custom inputs> >l2.add(>1>);> >l2.add(>2>);> >l2.add(>3>);> > >// Will add list l2 from 1 index> >l1.addAll(>1>, l2);> > >System.out.println(l1);> > >// Removes element from index 1> >l1.remove(>1>);> > >// Printing the updated List 1> >System.out.println(l1);> > >// Prints element at index 3 in list 1> >// using get() method> >System.out.println(l1.get(>3>));> > >// Replace 0th element with 5> >// in List 1> >l1.set(>0>,>5>);> > >// Again printing the updated List 1> >System.out.println(l1);> >}> }>

>

>

Producción

[1, 2] [1, 1, 2, 3, 2] [1, 2, 3, 2] 2 [5, 2, 3, 2]>

Ahora realicemos varias operaciones usando la interfaz de lista para comprender mejor las mismas. Discutiremos las siguientes operaciones enumeradas a continuación y luego las implementaremos mediante códigos Java limpios.

Operaciones en una interfaz de lista Java

Dado que List es una interfaz, solo se puede usar con una clase que implemente esta interfaz. Ahora, veamos cómo realizar algunas operaciones de uso frecuente en la Lista.

  • Operación 1: Agregar elementos a la clase List usando el método add()
  • Operación 2: Actualización de elementos en la clase List usando el método set()
  • Operación 3: Búsqueda de elementos utilizando los métodos indexOf(), lastIndexOf
  • Operación 4: Eliminar elementos usando el método remove()
  • Operación 5: Accediendo a elementos en la clase List usando el método get()
  • Operación 6: Comprobar si un elemento está presente en la clase Lista usando el método contiene()

Ahora analicemos las operaciones individualmente e implementemos las mismas en el código para comprenderlo mejor.

1. Agregar elementos a la clase List usando método agregar ()

Para agregar un elemento a la lista, podemos usar el agregar() método. Este método está sobrecargado para realizar múltiples operaciones basadas en diferentes parámetros.

Parámetros: Se necesitan 2 parámetros, a saber:

  • agregar(Objeto): Este método se utiliza para agregar un elemento al final de la Lista.
  • agregar (índice int, objeto): Este método se utiliza para agregar un elemento en un índice específico en la Lista

Ejemplo:

Java

comandos de Linux crean carpeta




// Java Program to Add Elements to a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >// Custom elements> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> >al.add(>1>,>'For'>);> > >// Print all the elements inside the> >// List interface object> >System.out.println(al);> >}> }>

>

>

Producción

[Geeks, For, Geeks]>

2. Actualizando elementos

Después de agregar los elementos, si deseamos cambiar el elemento, podemos hacerlo usando el colocar() método. Dado que la Lista está indexada, el índice del elemento hace referencia al elemento que deseamos cambiar. Por lo tanto, este método toma un índice y el elemento actualizado que debe insertarse en ese índice.

Ejemplo:

Java




// Java Program to Update Elements in a List> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface> >List al =>new> ArrayList();> > >// Adding elements to object of List class> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> >al.add(>1>,>'Geeks'>);> > >// Display theinitial elements in List> >System.out.println(>'Initial ArrayList '> + al);> > >// Setting (updating) element at 1st index> >// using set() method> >al.set(>1>,>'For'>);> > >// Print and display the updated List> >System.out.println(>'Updated ArrayList '> + al);> >}> }>

>

>

Producción

Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>

3. Buscando elementos

La búsqueda de elementos en la interfaz Lista es una operación común en la programación Java. La interfaz Lista proporciona varios métodos para buscar elementos, como el índice de() , último índice de() métodos.

El método indexOf() devuelve el índice de la primera aparición de un elemento específico en la lista, mientras que el método lastIndexOf() devuelve el índice de la última aparición de un elemento especificado.

Parámetros:

  • índice de (elemento): Devuelve el índice de la primera aparición del elemento especificado en la lista, o -1 si no se encuentra el elemento
  • último índice de (elemento): Devuelve el índice de la última aparición del elemento especificado en la lista, o -1 si no se encuentra el elemento

Ejemplo:

Java




import> java.util.ArrayList;> import> java.util.List;> > public> class> ListExample {> >public> static> void> main(String[] args)> >{> >// create a list of integers> >List numbers =>new> ArrayList();> > >// add some integers to the list> >numbers.add(>1>);> >numbers.add(>2>);> >numbers.add(>3>);> >numbers.add(>2>);> > >// use indexOf() to find the first occurrence of an> >// element in the list> >int> index = numbers.indexOf(>2>);> >System.out.println(> >'The first occurrence of 2 is at index '> >+ index);> > >// use lastIndexOf() to find the last occurrence of> >// an element in the list> >int> lastIndex = numbers.lastIndexOf(>2>);> >System.out.println(> >'The last occurrence of 2 is at index '> >+ lastIndex);> >}> }>

>

>

Producción

The first occurrence of 2 is at index 1 The last occurrence of 2 is at index 3>

4. Eliminando elementos

Para eliminar un elemento de una lista, podemos usar el eliminar() método. Este método está sobrecargado para realizar múltiples operaciones basadas en diferentes parámetros. Ellos son:

mi flixer

Parámetros:

  • eliminar (Objeto): Este método se utiliza para simplemente eliminar un objeto de la Lista. Si hay varios objetos de este tipo, se elimina la primera aparición del objeto.
  • eliminar (índice int): Dado que una Lista está indexada, este método toma un valor entero que simplemente elimina el elemento presente en ese índice específico de la Lista. Después de eliminar el elemento, todos los elementos se mueven hacia la izquierda para llenar el espacio y se actualizan los índices de los objetos.

Ejemplo:

Java




// Java Program to Remove Elements from a List> > // Importing List and ArrayList classes> // from java.util package> import> java.util.ArrayList;> import> java.util.List;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> > >// Creating List class object> >List al =>new> ArrayList();> > >// Adding elements to the object> >// Custom inputs> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> > >// Adding For at 1st indexes> >al.add(>1>,>'For'>);> > >// Print the initialArrayList> >System.out.println(>'Initial ArrayList '> + al);> > >// Now remove element from the above list> >// present at 1st index> >al.remove(>1>);> > >// Print the List after removal of element> >System.out.println(>'After the Index Removal '> + al);> > >// Now remove the current object from the updated> >// List> >al.remove(>'Geeks'>);> > >// Finally print the updated List now> >System.out.println(>'After the Object Removal '> >+ al);> >}> }>

>

>

Producción

Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

5. Accediendo a elementos

Para acceder a un elemento de la lista, podemos utilizar el conseguir() método, que devuelve el elemento en el índice especificado

Parámetros:

get(int index): este método devuelve el elemento en el índice especificado en la lista.

Ejemplo:

Java




// Java Program to Access Elements of a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >al.add(>'Geeks'>);> >al.add(>'For'>);> >al.add(>'Geeks'>);> > >// Accessing elements using get() method> >String first = al.get(>0>);> >String second = al.get(>1>);> >String third = al.get(>2>);> > >// Printing all the elements inside the> >// List interface object> >System.out.println(first);> >System.out.println(second);> >System.out.println(third);> >System.out.println(al);> >}> }>

>

>

Producción

Geeks For Geeks [Geeks, For, Geeks]>

6. Comprobando si un elemento está presente en la Lista

Para comprobar si un elemento está presente en la lista, podemos utilizar el contiene() método. Este método devuelve verdadero si el elemento especificado está presente en la lista; de lo contrario, devuelve falso.

Parámetros:

contiene (Objeto): este método toma un solo parámetro, el objeto que se verificará si está presente en la lista.

Ejemplo:

Java


convertir int a cadena



// Java Program to Check if an Element is Present in a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >al.add(>'Geeks'>);> >al.add(>'For'>);> >al.add(>'Geeks'>);> > >// Checking if element is present using contains()> >// method> >boolean> isPresent = al.contains(>'Geeks'>);> > >// Printing the result> >System.out.println(>'Is Geeks present in the list? '> >+ isPresent);> >}> }>

>

>

Producción

Is Geeks present in the list? true>

Complejidad de la interfaz de lista en Java

Operación

Complejidad del tiempo

Complejidad espacial

Agregar elemento en la interfaz de lista

O(1)

O(1)

Eliminar elemento de la interfaz de lista

EN)

EN)

Reemplazar elemento en la interfaz de lista

EN)

EN)

Interfaz de lista transversal

EN)

EN)

Iterando sobre la interfaz de lista en Java

Hasta ahora tenemos un tamaño de entrada muy pequeño y realizamos operaciones manualmente para cada entidad. Ahora analicemos varias formas en las que podemos iterar sobre la lista para que funcionen para un conjunto de muestra más grande.

Métodos: Hay varias formas de recorrer la Lista. Las formas más famosas son mediante el uso de lo básico. en bucle en combinación con un método obtener() para obtener el elemento en un índice específico y el avanzado para un bucle .

Ejemplo:

Java




// Java program to Iterate the Elements> // in an ArrayList> > // Importing java utility classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty Arraylist of string type> >List al =>new> ArrayList();> > >// Adding elements to above object of ArrayList> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> > >// Adding element at specified position> >// inside list object> >al.add(>1>,>'For'>);> > >// Using for loop for iteration> >for> (>int> i =>0>; i // Using get() method to // access particular element System.out.print(al.get(i) + ' '); } // New line for better readability System.out.println(); // Using for-each loop for iteration for (String str : al) // Printing all the elements // which was inside object System.out.print(str + ' '); } }>

>

>

Producción

Geeks For Geeks Geeks For Geeks>

Métodos de la interfaz de lista

Dado que el concepto principal detrás de los diferentes tipos de listas es el mismo, la interfaz de listas contiene los siguientes métodos:

Método

Descripción

agregar(índice int, elemento) Este método se utiliza con la interfaz de lista de Java para agregar un elemento en un índice particular de la lista. Cuando se pasa un solo parámetro, simplemente agrega el elemento al final de la lista.
addAll(índice int, colección colección) Este método se utiliza con List Interface en Java para agregar todos los elementos de la colección dada a la lista. Cuando se pasa un solo parámetro, agrega todos los elementos de la colección dada al final de la lista.
tamaño() Este método se utiliza con Java List Interface para devolver el tamaño de la lista.
claro() Este método se utiliza para eliminar todos los elementos de la lista. Sin embargo, la referencia de la lista creada aún se almacena.
eliminar (índice int) Este método elimina un elemento del índice especificado. Desplaza los elementos posteriores (si los hay) hacia la izquierda y disminuye sus índices en 1.
eliminar (elemento) Este método se utiliza con la interfaz de lista de Java para eliminar la primera aparición del elemento dado en la lista.
obtener (índice int) Este método devuelve elementos en el índice especificado.
conjunto (índice int, elemento) Este método reemplaza elementos en un índice determinado con el nuevo elemento. Esta función devuelve el elemento que acaba de ser reemplazado por un elemento nuevo.
índice de (elemento) Este método devuelve la primera aparición del elemento dado o -1 si el elemento no está presente en la lista.
último índice de (elemento) Este método devuelve la última aparición del elemento dado o -1 si el elemento no está presente en la lista.
es igual (elemento) Este método se utiliza con Java List Interface para comparar la igualdad del elemento dado con los elementos de la lista.
código hash() Este método se utiliza con la interfaz de lista en Java para devolver el valor del código hash de la lista dada.
esta vacio() Este método se utiliza con la interfaz de lista de Java para comprobar si la lista está vacía o no. Devuelve verdadero si la lista está vacía, en caso contrario devuelve falso.
contiene (elemento) Este método se utiliza con la interfaz de lista en Java para comprobar si la lista contiene el elemento dado o no. Devuelve verdadero si la lista contiene el elemento.
contieneTodo(colección colección) Este método se utiliza con la interfaz de lista de Java para comprobar si la lista contiene toda la colección de elementos.
ordenar (comparador comparador) Este método se utiliza con la interfaz de lista en Java para ordenar los elementos de la lista según lo dado. comparador .

Lista de Java frente a conjunto

Tanto la interfaz Lista como la interfaz Conjunto heredan la interfaz Colección. Sin embargo, existen algunas diferencias entre ellos.

Lista

Colocar

La Lista es una secuencia ordenada. El Conjunto es una secuencia desordenada.
La lista permite elementos duplicados El conjunto no permite elementos duplicados.
Se puede acceder a los elementos por su posición. No se permite el acceso de posición a los elementos.
Se pueden almacenar varios elementos nulos. El elemento nulo solo se puede almacenar una vez.
Las implementaciones de lista son ArrayList, LinkedList, Vector, Stack Las implementaciones de conjuntos son HashSet, LinkedHashSet.

Asociación de clases con una interfaz de lista Java

Ahora analicemos las clases que implementan la interfaz de lista, para las cuales primero consulte la representación gráfica a continuación para comprender mejor la interfaz de lista. Es el siguiente:

ResumenLista , Copiar en escritura Lista de matrices , y el ResumenListaSecuencial son las clases que implementan la interfaz List. Se implementa una funcionalidad separada en cada una de las clases mencionadas. Son los siguientes:

  1. ResumenLista: Esta clase se utiliza para implementar una lista no modificable, para lo cual solo es necesario extender esta clase AbstractList e implementar solo el conseguir() y el tamaño() métodos.
  2. CopiarEnWriteArrayList: Esta clase implementa la interfaz de lista. Es una versión mejorada de Lista de arreglo en el que todas las modificaciones (agregar, configurar, eliminar, etc.) se implementan haciendo una copia nueva de la lista.
  3. Lista secuencial abstracta: Esta clase implementa el Interfaz de colección y la clase AbstractCollection. Esta clase se utiliza para implementar una lista no modificable, para lo cual solo es necesario extender esta clase AbstractList e implementar solo el conseguir() y el tamaño() métodos.

Procederemos de esta manera.

  • Lista de arreglo
  • Vector
  • Pila
  • Lista enlazada

Analicémoslos secuencialmente e implementémoslos para descubrir el funcionamiento de las clases con la interfaz List.

1. Lista de matrices

Una lista de matrices La clase que se implementa en el marco de la colección nos proporciona matrices dinámicas en Java. Sin embargo, puede ser más lento que los arreglos estándar, pero puede ser útil en programas donde se necesita mucha manipulación en el arreglo. Veamos cómo crear un objeto de lista usando esta clase.

Ejemplo:

Java


lista vs conjunto en java



// Java program to demonstrate the> // creation of list object using the> // ArrayList class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of ArrayList> >int> n =>5>;> > >// Declaring the List with initial size n> >List arrli =>new> ArrayList(n);> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >arrli.add(i);> > >// Printing elements> >System.out.println(arrli);> > >// Remove element at index 3> >arrli.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(arrli);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(arrli.get(i) + ' '); } }>

>

>

Producción

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

2. Vectores

Vector es una clase que se implementa en el marco de la colección e implementa una matriz de objetos que se puede ampliar. Vector implementa una matriz dinámica que significa que puede crecer o reducirse según sea necesario. Al igual que una matriz, contiene componentes a los que se puede acceder mediante un índice entero. Los vectores básicamente pertenecen a clases heredadas, pero ahora son totalmente compatibles con las colecciones. Veamos cómo crear un objeto de lista usando esta clase.

Ejemplo:

Java




// Java program to demonstrate the> // creation of list object using the> // Vector class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the vector> >int> n =>5>;> > >// Declaring the List with initial size n> >List v =>new> Vector(n);> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >v.add(i);> > >// Printing elements> >System.out.println(v);> > >// Remove element at index 3> >v.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(v);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(v.get(i) + ' '); } }>

>

>

Producción

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

3. pila

Stack es una clase que se implementa en el marco de la colección y extiende los modelos de clases vectoriales e implementa el Ejemplo:

Java

Ejemplo:

Java




// Java program to demonstrate the> // creation of list object using the> // Stack class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the stack> >int> n =>5>;> > >// Declaring the List> >List s =>new> Stack();> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >s.add(i);> > >// Printing elements> >System.out.println(s);> > >// Remove element at index 3> >s.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(s);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(s.get(i) + ' '); } }>

>

>

Producción

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

4. Lista enlazada

Ejemplo:

Java

LinkedList es una clase que se implementa en el marco de la colección que implementa inherentemente el Ejemplo:

Java

Ejemplo:

Java




sistemas operativos mac

// Java program to demonstrate the> // creation of list object using the> // LinkedList class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the LinkedList> >int> n =>5>;> > >// Declaring the List with initial size n> >List ll =>new> LinkedList();> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >ll.add(i);> > >// Printing elements> >System.out.println(ll);> > >// Remove element at index 3> >ll.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(ll);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(ll.get(i) + ' '); } }>

>

>

Producción

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>