Método Java LinkedList contains()
contains()El método es, en Java,LinkedListun método común proporcionado por la clase, utilizado para comprobar si la lista enlazada contiene el elemento especificado. Este método pertenece ajava.util.LinkedListla clase, hereda dejava.util.AbstractCollectionla clase.
Sintaxis del método
public boolean contains(Object o)
Valor de retorno
- Si la lista enlazada contiene el elemento especificado, devuelve
true - Si no contiene el elemento especificado, devuelve
false
Explicación detallada del método
Principio de funcionamiento
contains()El método recorre cada elemento de la lista enlazada y utilizaequals()el método para comparar cada elemento con el objeto objetivo. Si encuentra un elemento coincidente, devuelve inmediatamentetrue; si recorre toda la lista enlazada sin encontrar un elemento coincidente, devuelvefalse。
Complejidad temporal
Dado queLinkedListes una lista doblemente enlazada,contains()el método necesita buscar secuencialmente desde el inicio de la lista enlazada, por lo que su complejidad temporal es O(n), donde n es el número de elementos en la lista enlazada.
Ejemplo de uso
Uso básico
Ejemplo
public class LinkedListContainsExample {
public static void main(String[] args) {
// Crear un LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Agregar elementos
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Verificar si el elemento existe
System.out.println("Contains Apple? " + fruits.contains("Apple")); // Salida: true
System.out.println("Contains Grape? " + fruits.contains("Grape")); // Salida: false
}
}
Uso de objetos personalizados
Al usar objetos personalizados, es necesario sobrescribir correctamenteequals()el método, de lo contrariocontains()el método podría no funcionar como se espera.
Ejemplo
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Sobrescribir el método equals
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
// Sobrescribir el método hashCode
@Override
public int hashCode() {
return 31 * name.hashCode() + age;
}
}
public class CustomObjectExample {
public static void main(String[] args) {
LinkedList<Person> people = new LinkedList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
Person alice = new Person("Alice", 25);
System.out.println("Contains Alice? " + people.contains(alice)); // Salida: true
}
}
Notas
1. Manejo de valores null
LinkedListPermite contenernullvalor; se puede utilizarcontains(null)para comprobar si existe en la lista enlazadanulldicho valor.
Ejemplo
list.add(null);
System.out.println(list.contains(null)); // Salida: true
2. Consideraciones de rendimiento
Dado quecontains()el método necesita recorrer la lista enlazada; para listas enlazadas grandes, llamar a este método con frecuencia puede afectar el rendimiento. Si necesita comprobar con frecuencia si existe un elemento, puede considerar usarHashSetestructuras de datos más adecuadas para la búsqueda, etc.
3. Importancia del método equals()
contains()El método depende delequals()método del elemento para comparar objetos. Si la clase personalizada no sobrescribe correctamenteequals()el método,contains()el método podría no reconocer correctamente objetos iguales.
Comparación con otros métodos
contains() vs indexOf()
contains(): devuelve boolean, solo comprueba si el elemento existeindexOf(): devuelve int, devuelve la posición del índice de la primera aparición del elemento; si no existe, devuelve -1
Ejemplo
list.add("A");
list.add("B");
list.add("A");
System.out.println(list.contains("A")); // Salida: true
System.out.println(list.indexOf("A")); // Salida: 0
contains() vs containsAll()
contains(): comprueba si existe un solo elementocontainsAll(): comprueba si contiene todos los elementos de la colección especificada
Ejemplo
list.add("A");
list.add("B");
list.add("C");
System.out.println(list.contains("A")); // Salida: true
List<String> checkList = Arrays.asList("A", "B");
System.out.println(list.containsAll(checkList)); // Salida: true
Resumen
LinkedListdecontains()El método es una herramienta simple pero práctica para verificar si existe un elemento específico en la lista enlazada. Comprender su principio de funcionamiento y su uso correcto es muy importante para escribir programas Java eficientes. Recuerde los siguientes puntos:
contains()El método utilizaequals()para comparar elementos- Para objetos personalizados, debe sobrescribirse correctamente
equals()yhashCode()el método - La complejidad temporal de este método es O(n), no es adecuado para usarse con frecuencia en listas enlazadas grandes.
- Se pueden elegir, según las necesidades específicas,
indexOf()ocontainsAll()métodos alternativos, etc.
Mediante el uso razonable decontains()método, se pueden administrar y operar eficazmenteLinkedListlos datos en.
Java LinkedList