Saltar al contenido

Interfaz de lista en Java con ejemplos

septiembre 23, 2021
gfg 200x200 min

La interfaz List proporciona una forma de almacenar la colección ordenada. Es una interfaz secundaria de Collection. Es una colección ordenada de objetos en la 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.

List-and-ArrayList-en-Java-Collection-Framework

Declaración: La interfaz de lista se declara como:

public abstract interface List extends Collection ; 

Elaboremos sobre creando objetos o instancias en una clase List. Ya que Lista es una interfaz, no se pueden crear objetos de la lista de tipos. Siempre necesitamos una clase que amplíe esta lista para crear un objeto. Y también, después de la introducción de Genéricos en Java 1.5, es posible restringir el tipo de objeto que se puede almacenar en la Lista.

Sintaxis: Este tipo de lista segura se puede definir como:

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

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

Ejemplo:

Java

import java.util.*;

class GFG {

    

    public static void main(String[] args)

    {

        

        List<Integer> l1 = new ArrayList<Integer>();

        

        

        l1.add(0, 1);

        l1.add(1, 2);

        

        System.out.println(l1);

        

        

        List<Integer> l2 = new ArrayList<Integer>();

        

        

        l2.add(1);

        l2.add(2);

        l2.add(3);

        

        l1.addAll(1, l2);

        System.out.println(l1);

        

        l1.remove(1);

        

        System.out.println(l1);

        

        

        System.out.println(l1.get(3));

        

        

        l1.set(0, 5);

        

        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 List Interface para tener una mejor comprensión de las mismas. Discutiremos las siguientes operaciones que se enumeran a continuación y luego implementaremos a través de códigos Java limpios.

Operaciones en una interfaz de lista

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.

  1. Agregar elementos a la clase List usando el método add ()
  2. Actualizar elementos en la clase List usando el método set ()
  3. Eliminando elementos usando el método remove ()

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

Operación 1: Agregar elementos a la clase List usando el método add ()

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

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

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

Ejemplo:

Java

import java.util.*;

class GFG {

    

    public static void main(String args[])

    {

        

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

        

        

        al.add("Geeks");

        al.add("Geeks");

        al.add(1, "For");

        

        

        System.out.println(al);

    }

}

Producción
[Geeks, For, Geeks]

Operación 2: Actualización de elementos

Luego de agregar los elementos, si deseamos cambiar el elemento, podemos hacerlo usando el método set (). Dado que List está indexado, el elemento que deseamos cambiar está referenciado por el índice del elemento. Por lo tanto, este método toma un índice y el elemento actualizado que debe insertarse en ese índice.

Ejemplo:

Java

import java.util.*;

class GFG {

    

    public static void main(String args[])

    {

        

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

        

        al.add("Geeks");

        al.add("Geeks");

        al.add(1, "Geeks");

        

        System.out.println("Initial ArrayList " + al);

        

        

        al.set(1, "For");

        

        System.out.println("Updated ArrayList " + al);

    }

}

Producción:
Initial ArrayList [Geeks, Geeks, Geeks]
Updated ArrayList [Geeks, For, Geeks]

Operación 3: Eliminación de elementos

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

Parámetros:

  1. eliminar (Objeto): Este método se utiliza para eliminar simplemente un objeto de la Lista. Si hay varios objetos de este tipo, se elimina la primera aparición del objeto.
  2. 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 en 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

import java.util.ArrayList;

import java.util.List;

class GFG {

    

    public static void main(String args[])

    {

        

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

        

        

        al.add("Geeks");

        al.add("Geeks");

        

        al.add(1, "For");

        

        System.out.println("Initial ArrayList " + al);

        

        

        al.remove(1);

        

        System.out.println("After the Index Removal " + al);

        

        

        al.remove("Geeks");

        

        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]

Iterando sobre la lista

Hasta ahora tenemos un tamaño de entrada muy pequeño y estamos realizando operaciones manualmente para cada entidad. Ahora analicemos varias formas en las que podemos iterar sobre la Lista para que funcione para un conjunto de muestreadores más grande.

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

Ejemplo

Java

import java.util.*;

public class GFG {

    public static void main(String args[])

    {

        List<String> al

            = new ArrayList<>();

        al.add("Geeks");

        al.add("Geeks");

        al.add(1, "For");

        

        

        for (int i = 0; i < al.size(); i++) {

            System.out.print(al.get(i) + " ");

        }

        System.out.println();

        

        for (String str : al)

            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 lista contiene los siguientes métodos:

Método

Descripción

agregar (índice int, elemento) Este método se utiliza 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 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.
Talla() Este método se utiliza 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 todavía se almacena.
eliminar (índice int) Este método elimina un elemento del índice especificado. Desplaza los elementos subsiguientes (si los hay) hacia la izquierda y reduce sus índices en 1.
eliminar (elemento) Este método se utiliza para eliminar la primera aparición del elemento dado en la lista.
obtener (índice int) Este método devuelve elementos en el índice especificado.
set (int índice, elemento) Este método reemplaza elementos en un índice dado con el nuevo elemento. Esta función devuelve el elemento que acaba de ser reemplazado por un nuevo elemento.
indexOf (elemento) Este método devuelve la primera aparición del elemento dado o -1 si el elemento no está presente en la lista.
lastIndexOf (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 a (elemento) Este método se utiliza para comparar la igualdad del elemento dado con los elementos de la lista.
código hash() Este método se utiliza para devolver el valor del código hash de la lista dada.
esta vacio() Este método se utiliza para comprobar si la lista está vacía o no. Devuelve verdadero si la lista está vacía, de lo contrario es falso.
contiene (elemento) Este método se usa para verificar si la lista contiene el elemento dado o no. Devuelve verdadero si la lista contiene el elemento.
containsAll (Colección colección) Este método se utiliza para comprobar si la lista contiene toda la colección de elementos.
sort (comp del comparador) Este método se utiliza para ordenar los elementos de la lista sobre la base del comparador dado.

Asociación de clases con una interfaz de lista

Ahora analicemos las clases que implementan la interfaz de lista para las cuales primero consulte la representación gráfica a continuación para tener una mejor comprensión de la interfaz de lista. Es como sigue:

List-ArrayList-in-Java-In-Depth-Study

AbstractList, CopyOnWriteArrayList y AbstractSequentialList son las clases que implementan la interfaz List. Se implementa una funcionalidad separada en cada una de las clases mencionadas. Son los siguientes:

  1. AbstractList: Esta clase se usa para implementar una lista no modificable, para la cual solo se necesita extender esta clase AbstractList e implementar solo la obtener() y el Talla() métodos.
  2. CopyOnWriteArrayList: Esta clase implementa la interfaz de lista. Es una versión mejorada de ArrayList en la que todas las modificaciones (agregar, configurar, eliminar, etc.) se implementan haciendo una copia nueva de la lista.
  3. AbstractSequentialList: Esta clase implementa la interfaz Collection y la clase AbstractCollection. Esta clase se utiliza para implementar una lista no modificable, para lo cual solo se necesita extender esta clase AbstractList e implementar solo la obtener() y el Talla() métodos.

Procederemos de esta manera.

  • Lista de arreglo
  • Vector
  • Apilar
  • Lista enlazada

Discutámoslos secuencialmente e implementemos lo mismo para averiguar el funcionamiento de las clases con la interfaz List.

Clase 1: ArrayList

Lista de arreglo 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 las matrices estándar, pero puede ser útil en programas donde se necesita mucha manipulación en la matriz. Veamos cómo crear un objeto de lista usando esta clase.

Ejemplo:

Java

import java.io.*;

import java.util.*;

class GFG {

    public static void main(String[] args)

    {

        

        int n = 5;

        

        List<Integer> arrli

            = new ArrayList<Integer>(n);

        

        

        for (int i = 1; i <= n; i++)

            arrli.add(i);

        

        System.out.println(arrli);

        

        arrli.remove(3);

        

        System.out.println(arrli);

        

        for (int i = 0; i < arrli.size(); i++)

            

close