Método size() de Java LinkedList

Java LinkedList Java LinkedList


size()El método es en JavaLinkedListun método común proporcionado por la clase, pertenece aljava.utilpaquete. La función principal de este método es devolver el número de elementos en la lista enlazada actual.

Sintaxis del método:

public int size()

Valor de retorno:

  • Devuelveintun valor de tipo, que indica el número de elementos en la lista enlazada
  • Si la lista enlazada está vacía, devuelve 0

Características del método

Complejidad temporal

size()La complejidad temporal del método es O(1), lo que significa que sin importar cuántos elementos haya en la lista enlazada, el tiempo para obtener el tamaño es constante.

Esto se debe a queLinkedListla clase mantiene internamente unasizevariable, que se actualiza automáticamente al agregar o eliminar elementos; al invocar alsize()método, simplemente devuelve el valor de esta variable.

Diferencia con length de arrays

Los principiantes a veces confundensize()el método con ellengthatributo:

  • El length de los arrayslengthes un atributo que representa la capacidad del array
  • LinkedListdesize()es un método que devuelve el número de elementos realmente almacenados

Seguridad de hilos

size()El método en sí no es seguro para hilos. Si se usa en un entorno multiproceso, se necesitan medidas de sincronización adicionales.


Ejemplos de uso

Uso básico

Ejemplo

import java.util.LinkedList;

public class LinkedListSizeDemo {
    public static void main(String[] args) {
        // Crear una LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Agregar elementos
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
       
        // Usar el método size() para obtener el número de elementos
        int size = fruits.size();
        System.out.println("Cantidad de elementos en LinkedList: " + size); // Salida: 3
    }
}

El caso de lista enlazada vacía

Ejemplo

import java.util.LinkedList;

public class EmptyLinkedListDemo {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
        System.out.println("size de la lista enlazada vacía: " + numbers.size()); // Salida: 0
    }
}

Demostración de cambios dinámicos

Ejemplo

import java.util.LinkedList;

public class DynamicSizeDemo {
    public static void main(String[] args) {
        LinkedList<Character> letters = new LinkedList<>();
        System.out.println("Tamaño inicial: " + letters.size()); // 0
       
        letters.add('A');
        letters.add('B');
        System.out.println("Después de agregar dos elementos: " + letters.size()); // 2
       
        letters.removeFirst();
        System.out.println("Después de eliminar un elemento: " + letters.size()); // 1
       
        letters.clear();
        System.out.println("Después de vaciar: " + letters.size()); // 0
    }
}

Preguntas frecuentes

¿El método size() lanza excepciones?

size()El método normalmente no lanza excepciones. Incluso si la lista enlazada es null (nótese que no es una lista vacía), llamar alsize()método tampoco lanzará una excepción, pero lanzaráNullPointerException。

Ejemplo

LinkedList<String> list = null;
// La siguiente línea lanzará NullPointerException
System.out.println(list.size());

Relación entre size() e isEmpty()

isEmpty()El método se basa ensize()la implementación del método:

Ejemplo

public boolean isEmpty() {
    return size() == 0;
}

Por lo tanto,list.isEmpty()es equivalente alist.size() == 0, pero el primero es más legible.


Escenarios de aplicación práctica

Iteración en bucle

Ejemplo

LinkedList<String> colors = new LinkedList<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");

for (int i = 0; i < colors.size(); i++) {
    System.out.println(colors.get(i));
}

Verificación de capacidad

Ejemplo

LinkedList<Integer> queue = new LinkedList<>();
// ...agregar elementos...

if (queue.size() > 10) {
    System.out.println("La cola está llena, no se pueden agregar más elementos");
}

Comparación con otras colecciones

Ejemplo

LinkedList<String> list1 = new LinkedList<>();
LinkedList<String> list2 = new LinkedList<>();

// ...rellenar dos listas enlazadas...

if (list1.size() == list2.size()) {
    System.out.println("Las dos listas enlazadas tienen el mismo tamaño");
}

Consideraciones de rendimiento

Aunquesize()el método en sí tiene complejidad O(1), pero en algunos casos llamar con frecuencia asize()puede tener un impacto en el rendimiento:

  1. Entorno multiproceso: cada llamada asize()necesita leer en memoria lasizevariable
  2. Condiciones de bucle complejas: comofor (int i = 0; i < list.size(); i++), cada iteración llamará alsize()

Para el segundo caso, se puede optimizar a:

Ejemplo

int size = list.size();
for (int i = 0; i < size; i++) {
    // Cuerpo del bucle
}

Resumen

LinkedListdesize()El método es un método simple pero muy importante; proporciona la capacidad de obtener rápidamente el número actual de elementos de la lista enlazada. Comprender el principio de funcionamiento y las características de este método ayuda a escribir código Java más eficiente y confiable.

Recuerda:

  • size()Devuelve el número de elementos, no la capacidad
  • El de una lista enlazada vacíasize()devuelve 0
  • Al usarlo en un entorno multiproceso, se debe prestar atención a la sincronización
  • Se puede combinar conisEmpty()el método para que el código sea más claro

Java LinkedList Java LinkedList

Otras extensiones