Método size() de 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:
Valor de retorno:
- Devuelve
intun 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 arrays
lengthes 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
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
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
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
// 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
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
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
// ...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> 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:
- Entorno multiproceso: cada llamada a
size()necesita leer en memoria lasizevariable - Condiciones de bucle complejas: como
for (int i = 0; i < list.size(); i++), cada iteración llamará alsize()
Para el segundo caso, se puede optimizar a:
Ejemplo
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ía
size()devuelve 0 - Al usarlo en un entorno multiproceso, se debe prestar atención a la sincronización
- Se puede combinar con
isEmpty()el método para que el código sea más claro
Java LinkedList