Método Java LinkedList indexOf()

Java LinkedList Java LinkedList


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

  1. El parámetro puede ser de cualquier tipo de objeto, incluidonull
  2. Al buscar se utilizaequals()el método para comparar elementos
  3. Si la lista enlazada contiene múltiples elementos iguales, solo devuelve el índice de la primera coincidencia

Ejemplo de uso

Ejemplo básico

Ejemplo

import java.util.LinkedList;

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

import java.util.LinkedList;

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:

  1. Comienza el recorrido desde el primer nodo (nodo cabeza) de la lista enlazada
  2. Para cada nodo, utilizaequals()el método para comparar elementos
  3. Cuando encuentra el primer nodo que coincide, devuelve el índice actual
  4. 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

LinkedList<String> usernames = new LinkedList<>();
// ... 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

LinkedList<Task> taskList = new LinkedList<>();
// ... 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

LinkedList<String> listWithDuplicates = new LinkedList<>();
// ... Agregar datos que pueden estar duplicados

LinkedList<String> uniqueList = new LinkedList<>();
for (String item : listWithDuplicates) {
    if (uniqueList.indexOf(item) == -1) {
        uniqueList.add(item);
    }
}

Notas

  1. Consideraciones de rendimiento: Para operaciones de búsqueda frecuentes,ArrayListdeindexOf()normalmente queLinkedListmás rápido
  2. Comparación de elementos: Asegúrese de que los objetos almacenados enLinkedListimplementen correctamenteequals()el método
  3. Modificación concurrente: Si modifica la lista enlazada durante la iteración, puede lanzarConcurrentModificationException
  4. Manejo de null: Puede buscarnullelementos, 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, incluidosnull

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.

Java LinkedList Java LinkedList

Otras extensiones