Método Java LinkedList indexOf()
indexOf()El método es, en Java,LinkedListun método común proporcionado por la clase, utilizado para encontrar la primera aparición de un elemento especificado en la lista enlazada. Este método pertenece ajava.util.LinkedListla clase, hereda dejava.util.AbstractListla clase.
Sintaxis del método:
public int indexOf(Object o)
Valor de retorno:
- Devuelve el índice de la primera aparición del elemento especificado en la lista enlazada (contando desde 0)
- Si la lista enlazada no contiene el elemento, devuelve -1
Descripción de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| o | Object | El elemento que se necesita buscar en la lista enlazada |
Notas
- El parámetro puede ser de cualquier tipo de objeto, incluido
null - Al buscar se utiliza
equals()el método para comparar elementos - Si la lista enlazada contiene múltiples elementos iguales, solo devuelve el índice de la primera coincidencia
Ejemplo de uso
Ejemplo básico
Ejemplo
public class LinkedListIndexOfExample {
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");
fruits.add("Banana"); // Elemento duplicado
// Buscar el índice del elemento
System.out.println("Index of 'Banana': " + fruits.indexOf("Banana")); // Salida: 1
System.out.println("Index of 'Grape': " + fruits.indexOf("Grape")); // Salida: -1
System.out.println("Index of 'Orange': " + fruits.indexOf("Orange")); // Salida: 2
}
}
Manejo de elementos null
Ejemplo
public class NullIndexOfExample {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add(null);
list.add("B");
System.out.println("Index of null: " + list.indexOf(null)); // Salida: 1
}
}
Principio de implementación
Implementación subyacente
LinkedListdeindexOf()El método busca el elemento recorriendo los nodos de la lista enlazada:
- Comienza el recorrido desde el primer nodo (nodo cabeza) de la lista enlazada
- Para cada nodo, utiliza
equals()el método para comparar elementos - Cuando encuentra el primer nodo que coincide, devuelve el índice actual
- Si recorre todos los nodos sin encontrarlo, devuelve -1
Complejidad temporal
- Complejidad temporal promedio: O(n)
- Complejidad temporal en el peor caso: O(n)
PorqueLinkedListestá implementado basado en lista enlazada, necesita buscar secuencialmente desde el principio y no puede acceder aleatoriamente como un array.
Comparación con métodos relacionados
indexOf() vs lastIndexOf()
| Método | Descripción | Dirección de búsqueda |
|---|---|---|
| indexOf() | Devuelve la posición de la primera aparición del elemento | De principio a fin |
| lastIndexOf() | Devuelve la posición de la última aparición del elemento | De fin a principio |
indexOf() vs contains()
| Método | Valor de retorno | Uso |
|---|---|---|
| indexOf() | int (posición del índice) | Se usa cuando se necesita conocer la posición del elemento |
| contains() | boolean | Se usa cuando solo se necesita saber si el elemento existe |
En realidad,contains()el método internamente llama aindexOf() >= 0para implementarlo.
Escenarios de aplicación práctica
Escenario 1: Verificar si existe un elemento
Ejemplo
// ... Agregar nombre de usuario
String input = "admin";
if (usernames.indexOf(input) != -1) {
System.out.println("El nombre de usuario ya existe");
} else {
System.out.println("Se puede registrar");
}
Escenario 2: Obtener la posición del elemento para operaciones posteriores
Ejemplo
// ... Agregar tarea
int index = taskList.indexOf(importantTask);
if (index != -1) {
// Insertar nueva tarea antes de la tarea importante
taskList.add(index, newUrgentTask);
}
Escenario 3: Deduplicación de datos
Ejemplo
// ... Agregar datos que pueden estar duplicados
LinkedList<String> uniqueList = new LinkedList<>();
for (String item : listWithDuplicates) {
if (uniqueList.indexOf(item) == -1) {
uniqueList.add(item);
}
}
Notas
- Consideraciones de rendimiento: Para operaciones de búsqueda frecuentes,
ArrayListdeindexOf()normalmente queLinkedListmás rápido - Comparación de elementos: Asegúrese de que los objetos almacenados en
LinkedListimplementen correctamenteequals()el método - Modificación concurrente: Si modifica la lista enlazada durante la iteración, puede lanzar
ConcurrentModificationException - Manejo de null: Puede buscar
nullelementos, pero tenga cuidado con elNullPointerExceptionriesgo
Resumen
LinkedListdeindexOf()El método es una herramienta de búsqueda práctica, que:
- Es simple y fácil de usar, solo necesita pasar el elemento a buscar
- Devuelve el índice de la primera aparición del elemento
- Devuelve -1 cuando no lo encuentra
- Es aplicable a varios tipos de objetos, incluidos
null
Comprender y dominar este método puede ayudarte a manejar las necesidades de búsqueda de datos en listas enlazadas de manera más eficiente.
Otras extensiones
Java LinkedList