Метод indexOf() класса Java LinkedList

Java LinkedList Java LinkedList


indexOf()Метод, в Java, являетсяLinkedListчасто используемый метод, предоставляемый классом, предназначенный для поиска позиции первого вхождения указанного элемента в связном списке. Этот метод принадлежитjava.util.LinkedListклассу и наследуется отjava.util.AbstractListclass.

Синтаксис метода:

public int indexOf(Object o)

Возвращаемое значение:

  • Возвращает индекс первого вхождения указанного элемента в связном списке (счёт с 0)
  • Возвращает -1, если связный список не содержит элемент

Описание параметра

Параметр Type Описание
o Object Элемент, который нужно найти в связном списке

Примечания

  1. Параметр может быть любого объектного типа, включаяnull
  2. При поискеequals()метод используется для сравнения элементов
  3. Если связный список содержит несколько одинаковых элементов, возвращается только индекс первого совпадающего элемента

Пример использования

Базовый пример

Пример

import java.util.LinkedList;

public class LinkedListIndexOfExample {
    public static void main(String[] args) {
        // Создаём LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Добавить элементы
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Banana"); // Дублирующийся элемент
       
        // Найти индекс элемента
        System.out.println("Индекс 'Banana': " + fruits.indexOf("Banana")); // Вывод: 1
        System.out.println("Индекс 'Grape': " + fruits.indexOf("Grape"));   // Вывод: -1
        System.out.println("Индекс 'Orange': " + fruits.indexOf("Orange")); // Вывод: 2
    }
}

Обработка null-элементов

Пример

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("Индекс null: " + list.indexOf(null)); // Вывод: 1
    }
}

Принцип реализации

Внутренняя реализация

LinkedListизindexOf()Метод находит элемент, обходя узлы связного списка:

  1. Начинаем обход с первого узла (головного узла) связного списка
  2. Для каждого узла используйтеequals()метод для сравнения элементов
  3. Когда найден первый подходящий узел, верните текущий индекс
  4. Если после обхода всех узлов элемент всё ещё не найден, верните -1

Временная сложность

  • Средняя временная сложность: O(n)
  • Временная сложность в худшем случае: O(n)

Потому чтоLinkedListон реализован на основе связного списка, требует последовательного поиска с начала и не допускает произвольного доступа, как массив.


Сравнение со связанными методами

indexOf() против lastIndexOf()

Метод Описание Направление поиска
indexOf() Возвращает позицию первого вхождения элемента От начала до конца
lastIndexOf() Возвращает позицию последнего вхождения элемента От конца к началу

indexOf() против contains()

Метод Возвращаемое значение Назначение
indexOf() int (позиция индекса) Используйте, когда нужно знать позицию элемента
contains() логическое значение Используйте, когда нужно только узнать, существует ли элемент

На самом деле,contains()метод внутри вызываетindexOf() >= 0чтобы реализовать это.


Практические сценарии применения

Сценарий 1: Проверить, существует ли элемент

Пример

LinkedList<String> usernames = new LinkedList<>();
// ... Добавить имя пользователя

String input = "admin";
if (usernames.indexOf(input) != -1) {
    System.out.println("Username already exists");
} else {
    System.out.println("You can register");
}

Сценарий 2: Получение позиции элемента для последующих операций

Пример

LinkedList<Task> taskList = new LinkedList<>();
// ... Добавить задачи

int index = taskList.indexOf(importantTask);
if (index != -1) {
    // Вставить новую задачу перед важной задачей
    taskList.add(index, newUrgentTask);
}

Qanuilingannguaq 3: Data allangortitinniq

Пример

LinkedList<String> listWithDuplicates = new LinkedList<>();
// ... Ilali data allangortitaqaqtumik

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

Примечания

  1. Suliniq isumaliurutit: Qinirniq aqqutaujut sulianut,ArrayListизindexOf()ilaaqLinkedListfaster
  2. Ilangit sanilliiniq: Qularnaaqtillugu pijit toqqorsimajut iluanitLinkedListnaammaktumik atulittailiniqequals()method
  3. Ilakkitaarniq allanngortinniq: Katitiriaq titiqqaq allanngortittauliqtillugu ingerlariini, immaqaa nalliiniaqtuqConcurrentModificationException
  4. обработка null: Вы можете искатьnullэлементы, но помните оNullPointerExceptionриски

Итог

LinkedListизindexOf()Метод представляет собой практичный инструмент поиска, который:

  • Простой и удобный в использовании, просто передайте элемент для поиска
  • Возвращает индекс первого вхождения элемента
  • Возвращает -1, если не найдено
  • Применим к различным типам объектов, включаяnull

Понимание и освоение этого метода поможет вам более эффективно справляться с задачами поиска данных в связных списках.

Java LinkedList Java LinkedList

Другие расширения