CodeGym /Blog Java /Random-ES /Lista Java
Autor
Alex Vypirailenko
Java Developer at Toshiba Global Commerce Solutions

Lista Java

Publicado en el grupo Random-ES
Java Collection Framework contiene interfaces y clases muy útiles que las implementan para trabajar con estructuras de datos. Se puede decir que este es uno de los frameworks JDK más importantes. La interfaz List es muy popular. porque sin todo tipo de listas en la programación es indispensable. En este artículo, cubriremos esta interfaz, los métodos e implementaciones de Java List.

Interfaz de lista de Java

Lo más importante de una lista es que es una colección ordenada . También puedes llamarlo una secuencia. En Java, las listas son homogéneas, es decir, los elementos de la lista son del mismo tipo de datos. La interfaz Java List hereda de Collection, hereda todas sus operaciones. Además de ellos, las siguientes operaciones también son posibles en List:
  • Acceso posicional. Cada elemento tiene un índice y se puede manipular en función de su posición. en la lista. Es decir, puede agregar, excluir y modificar elementos.
  • Buscar. Puede encontrar un elemento en una lista por su contenido y devolver su índice.
  • Iteración. La naturaleza secuencial de List permite el uso de métodos de iteración (listIterator).
  • Rango de vista. El método de sublista realiza operaciones de rango arbitrario en la lista.

Métodos de lista de Java

Las operaciones anteriores se exponen en los métodos de la interfaz Java List. Aquí hay algunos de ellos:
Método Descripción
agregar (elemento E) Este método agrega elemento elemento al final de esta lista.
agregar (índice int, elemento) El método agrega un elemento en un índice particular de la lista. Si se pasa un parámetro necesario, agrega el elemento al final de la lista.
addAll(índice int, colección colección) Agrega todos los elementos de la colección dada a la lista. Si se pasa un solo parámetro, agrega todos los elementos de la colección dada al final de la lista.
tamaño() Devuelve el tamaño de la lista (cantidad de elementos en la lista).
obtener (índice int) Devuelve el elemento en el índice especificado.
conjunto (índice int, elemento) Reemplaza elementos en un índice dado con el nuevo elemento y devuelve el elemento que fue reemplazado por un nuevo elemento.
eliminar (índice int) Elimina un elemento del índice especificado.
eliminar (elemento) Elimina la primera aparición del elemento dado en la lista.
claro() Elimina todos los elementos de la lista.
indexOf(elemento) Devuelve la primera aparición del elemento dado. Si el elemento no está presente en la lista, devuelve -1 .
últimoÍndiceDe(elemento) Devuelve la última aparición del elemento dado. Si el elemento no está presente en la lista, devuelve -1 .
es igual (elemento) Compara la igualdad del elemento dado con los elementos de la lista.
código hash() Devuelve el valor del código hash de la lista dada.
esta vacio() Comprueba si la lista está vacía. Devuelve verdadero si la lista está vacía.
contiene (elemento) Comprueba si la lista contiene el elemento . Devuelve verdadero si la lista contiene el elemento.
contieneTodo(colección colección) Comprueba si la lista contiene toda la colección de elementos.
ordenar (comparador comparador) Ordena los elementos de la lista sobre la base del comparador dado.
subLista(int fromIndex, int toIndex) Devuelve una vista de la parte de esta lista entre fromIndex, inclusive, y toIndex, exclusivo.

Implementación de listas

Debido a que List es una interfaz, los programas necesitan crear una implementación concreta de la misma. Puede elegir entre las siguientes implementaciones de listas en la API de colecciones de Java:
  • java.util.ArrayList
  • java.util.LinkedList
  • java.util.Vector
  • java.util.Stack
La implementación más popular de la interfaz List se llama ArrayList. Con mucha menos frecuencia, pero aún puede ver el uso de LinkedList en tareas reales, pero Vector y Stack se han vuelto moralmente obsoletos durante mucho tiempo, por lo que lo más probable es que los encuentre solo en proyectos con código heredado antiguo.

Declaración de interfaz de lista

Puede declarar una Lista en un programa Java de una de las siguientes maneras:

List<String> myList = new ArrayList();
List myList1 = new ArrayList();
List myList3 = new ArrayList<String>();
ArrayList arrayList = new ArrayList();
Lo mejor es declarar una nueva lista a través de una interfaz. De manera similar, puede declarar otras implementaciones de List. El camino más corto:

Vector myVector = new Vector;
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
Con tal declaración, el tipo de datos de los elementos de dichas listas se determina durante la inicialización de la lista, es decir, cuando se agregan elementos allí.

List myList = new ArrayList<String>();
Vector myVector = new Vector();
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
stack.add("Paul");
linkedList.add(1);
myVector.add(1.2f);
myList.add('a');
Ahora solo se pueden agregar cadenas a nuestra pila, enteros a linkedList , flotantes a myVector y myList es una lista de caracteres.

Cómo funciona ArrayList

Si ya está familiarizado con las matrices regulares, también está algo familiarizado con ArrayList. De hecho, ArrayList es una matriz dinámica y dentro de ella hay una matriz normal. Esta matriz actúa como un almacén de datos. ArrayList almacena solo tipos de referencia, cualquier objeto, incluidas clases de terceros, cadenas, flujos de salida y otras colecciones. Las clases contenedoras se utilizan para almacenar tipos de datos primitivos en ArrayList. Al crear una lista, podemos establecer inmediatamente su tamaño, pero en la mayoría de los casos no lo hacemos. De forma predeterminada, el tamaño de ArrayList = 10. ¿Qué aspecto tiene la adición de un nuevo elemento a un ArrayList? En primer lugar, se inicia una comprobación para ver si hay suficiente espacio en la matriz interna y si cabrá un elemento más. Si hay espacio, el nuevo elemento se agrega al final de la lista, es decir, a la celda que sigue al último elemento. Su índice será arraylist.size(). Si acabamos de crear nuestra lista y está vacía, esto significa que arrayList.size() = 0. En consecuencia, se agregará un nuevo elemento a la celda con índice 0. Si resulta que no hay suficiente espacio, se agregará un nuevo elemento. se crea una matriz dentro de ArrayList con el tamaño (el tamaño de OldArray * 1.5) + 1. Por el mismo principio, se produce una inserción en el medio de la lista, pero al mismo tiempo, todos los elementos que siguen al elemento insertado son desplazado a la derecha. Entonces, si tenemos 5 elementos en la matriz y necesitamos insertar un elemento en la celda número 2 (es decir, la tercera), entonces 0 y 1 elementos de la matriz permanecen en su lugar, aparece un nuevo elemento en la celda 2 y su predecesor va a la tercera celda y así sucesivamente. se agregará un nuevo elemento a la celda con índice 0. Si resulta que no hay suficiente espacio, se crea una nueva matriz dentro de ArrayList con el tamaño (el tamaño de OldArray * 1.5) + 1. De la misma manera En principio, se produce una inserción en medio de la lista, pero al mismo tiempo, todos los elementos que siguen al elemento insertado se desplazan hacia la derecha. Entonces, si tenemos 5 elementos en la matriz y necesitamos insertar un elemento en la celda número 2 (es decir, la tercera), entonces 0 y 1 elementos de la matriz permanecen en su lugar, aparece un nuevo elemento en la celda 2 y su predecesor va a la tercera celda y así sucesivamente. se agregará un nuevo elemento a la celda con índice 0. Si resulta que no hay suficiente espacio, se crea una nueva matriz dentro de ArrayList con el tamaño (el tamaño de OldArray * 1.5) + 1. De la misma manera En principio, se produce una inserción en medio de la lista, pero al mismo tiempo, todos los elementos que siguen al elemento insertado se desplazan hacia la derecha. Entonces, si tenemos 5 elementos en la matriz y necesitamos insertar un elemento en la celda número 2 (es decir, la tercera), entonces 0 y 1 elementos de la matriz permanecen en su lugar, aparece un nuevo elemento en la celda 2 y su predecesor va a la tercera celda y así sucesivamente. se produce una inserción en medio de la lista, pero al mismo tiempo, todos los elementos que siguen al elemento insertado se desplazan hacia la derecha. Entonces, si tenemos 5 elementos en la matriz y necesitamos insertar un elemento en la celda número 2 (es decir, la tercera), entonces 0 y 1 elementos de la matriz permanecen en su lugar, aparece un nuevo elemento en la celda 2 y su predecesor va a la tercera celda y así sucesivamente. se produce una inserción en medio de la lista, pero al mismo tiempo, todos los elementos que siguen al elemento insertado se desplazan hacia la derecha. Entonces, si tenemos 5 elementos en la matriz y necesitamos insertar un elemento en la celda número 2 (es decir, la tercera), entonces 0 y 1 elementos de la matriz permanecen en su lugar, aparece un nuevo elemento en la celda 2 y su predecesor va a la tercera celda y así sucesivamente.

Ejemplo de Java List (realización de Arraylist)


import java.util.*;

public class ArrayListExample2 {
   public static void main(String[] args) {
       List<String> myFriendsList = new ArrayList();
       //we created list of some objects 
       System.out.println( "the size of myList before init = " + myFriendsList.size());
       myFriendsList.add("Alex");
       myFriendsList.add("Tanya");
       myFriendsList.add("Veloxy");
       myFriendsList.add("Alex");
       myFriendsList.add("Andrew");
       System.out.println(myFriendsList);
       System.out.println( "the size of myList after init = " + myFriendsList.size());

       myFriendsList.add("Ihor");
       System.out.println(myFriendsList);
       System.out.println("the size of my list = " +  myFriendsList.size());


       //here the program will print out the first appearance of "Alex" element
       System.out.println(myFriendsList.indexOf("Alex"));
       //program will print out the first appearance of "Alex" element starting from the element 0

       myFriendsList.remove(3);
       System.out.println(myFriendsList.get(3));
       System.out.println("after removing one of Alex's there is only one Alex: " + myFriendsList);
       System.out.println(myFriendsList.get(1));



       myFriendsList.clear();
       System.out.println("the size of the vector after clear method = " +  myFriendsList.size());

   }
}
Aquí está la salida de este programa:
el tamaño de myList antes de init = 0 [Alex, Tanya, Veloxy, Alex, Andrés] el tamaño de myList después de init = 5 [Alex, Tanya, Veloxy, Alex, Andrés, Ihor] el tamaño de mi lista = 6 0 Andrés después de quitar uno de Alex solo queda un Alex: [Alex, Tanya, Veloxy, Andrew, Ihor] tania el tamaño del vector después del método claro = 0 Proceso finalizado con código de salida 0

Cómo funciona LinkedList

En una LinkedList, los elementos son en realidad enlaces en la misma cadena. Cada elemento, además de los datos que almacena, tiene un enlace al elemento anterior y siguiente. Estos enlaces le permiten navegar de un elemento a otro. El iterador admite el recorrido en ambas direcciones. Implementa métodos para obtener, eliminar e insertar al principio, en medio y al final de una lista. Le permite agregar cualquier elemento, incluido nulo. LinkedList implementa dos interfaces: no solo List, sino también Deque. Esto brinda la capacidad de crear una cola bidireccional a partir de cualquier elemento, incluso nulo. Cada objeto colocado en la lista enlazada es un nodo (nodo). Cada nodo contiene un elemento, un enlace al nodo anterior y siguiente. De hecho, la lista enlazada consta de una secuencia de nodos, cada uno de los cuales está diseñado para almacenar un objeto del tipo definido cuando se creó.

Ejemplo de código


import java.util.*;
public class LinkedListTest {

       public static void main(String args[]){

           List myLinkedList= new LinkedList<Integer>();
           myLinkedList.add(1);
           myLinkedList.add(2);
           myLinkedList.add(4);
           System.out.println("three added elements: " + myLinkedList);
           myLinkedList.add(5);
           myLinkedList.remove(1);
           System.out.println(myLinkedList);
           myLinkedList.size(); //3
           
           //add new element at the specified position:
           myLinkedList.add(2,7);
           System.out.println(myLinkedList);
                }
       }
La salida está aquí:
tres elementos añadidos: [1, 2, 4] [1, 4, 5] [1, 4, 7, 5]

Ejemplo de código vectorial

Vector también es una realización de matriz dinámica y es muy similar a ArrayList, pero sincronizado y tiene algunos métodos heredados que el marco de colección no contiene. Aquí hay un ejemplo simple del uso de esta clase.

import java.util.Vector;

public class VectorExample1 {

   public static void main(String[] args) {
       Vector vector = new Vector();
       System.out.println("the size of the empty vector = " +  vector.size());
       vector.add("Alex");
       vector.add("Tanya");
       vector.add("Andrew");
       System.out.println(vector);
       vector.add("Alex");
       vector.add("Ihor");
       System.out.println(vector);
       System.out.println("the size of the vector = " +  vector.size());
       System.out.println("the first element of the vector = " + vector.firstElement());

       //here the program will print out the first appearance of "Johnny" element
       System.out.println(vector.indexOf("Andrew"));
       //program will print out the first appearance of "Johnny" element starting from the element 1
       System.out.println(vector.indexOf("Alex", 1));
       System.out.println(vector);
       vector.clear();
       System.out.println("the size of the vector after clear method = " +  vector.size());

   }
}
La salida es:
el tamaño del vector vacío = 0 [Alex, Tanya, Andrés] [Alex, Tanya, Andrés, Alex, Ihor] el tamaño del vector = 5 el primer elemento del vector = Alex 2 3 [Alex, Tanya, Andrés, Alex, Ihor] el tamaño del vector después del método claro = 0 Proceso finalizado con código de salida 0

Ejemplo de código de clase Java Stack


import java.util.Stack;

public class StackTest {
   public static void main(String[] args) {
       Stack stack = new Stack();
       System.out.println(stack.isEmpty());
       stack.add("Paul");
       stack.add("Johnny");
       stack.add("Alex");
       System.out.println(stack.isEmpty());
       stack.push("Andrew");
       System.out.println(stack);
       stack.pop();
       System.out.println(stack);
   }
}
Stack no solo tiene métodos add() y remove() , sino también push y pop, son clásicos para dicha estructura de datos. La pila obedece la regla "el primero en entrar, el último en salir": esta es una cola tan antigua. Por lo tanto, la operación pop extrae el último elemento que se colocó en la pila. Aquí está el resultado de nuestro ejemplo:
verdadero falso [Paul, Johnny, Alex, Andrew] [Paul, Johnny, Alex]
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION