Метод indexOf() класса Java LinkedList
indexOf()Метод, в Java, являетсяLinkedListчасто используемый метод, предоставляемый классом, предназначенный для поиска позиции первого вхождения указанного элемента в связном списке. Этот метод принадлежитjava.util.LinkedListклассу и наследуется отjava.util.AbstractListclass.
Синтаксис метода:
public int indexOf(Object o)
Возвращаемое значение:
- Возвращает индекс первого вхождения указанного элемента в связном списке (счёт с 0)
- Возвращает -1, если связный список не содержит элемент
Описание параметра
| Параметр | Type | Описание |
|---|---|---|
| o | Object | Элемент, который нужно найти в связном списке |
Примечания
- Параметр может быть любого объектного типа, включая
null - При поиске
equals()метод используется для сравнения элементов - Если связный список содержит несколько одинаковых элементов, возвращается только индекс первого совпадающего элемента
Пример использования
Базовый пример
Пример
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-элементов
Пример
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()Метод находит элемент, обходя узлы связного списка:
- Начинаем обход с первого узла (головного узла) связного списка
- Для каждого узла используйте
equals()метод для сравнения элементов - Когда найден первый подходящий узел, верните текущий индекс
- Если после обхода всех узлов элемент всё ещё не найден, верните -1
Временная сложность
- Средняя временная сложность: O(n)
- Временная сложность в худшем случае: O(n)
Потому чтоLinkedListон реализован на основе связного списка, требует последовательного поиска с начала и не допускает произвольного доступа, как массив.
Сравнение со связанными методами
indexOf() против lastIndexOf()
| Метод | Описание | Направление поиска |
|---|---|---|
| indexOf() | Возвращает позицию первого вхождения элемента | От начала до конца |
| lastIndexOf() | Возвращает позицию последнего вхождения элемента | От конца к началу |
indexOf() против contains()
| Метод | Возвращаемое значение | Назначение |
|---|---|---|
| indexOf() | int (позиция индекса) | Используйте, когда нужно знать позицию элемента |
| contains() | логическое значение | Используйте, когда нужно только узнать, существует ли элемент |
На самом деле,contains()метод внутри вызываетindexOf() >= 0чтобы реализовать это.
Практические сценарии применения
Сценарий 1: Проверить, существует ли элемент
Пример
// ... Добавить имя пользователя
String input = "admin";
if (usernames.indexOf(input) != -1) {
System.out.println("Username already exists");
} else {
System.out.println("You can register");
}
Сценарий 2: Получение позиции элемента для последующих операций
Пример
// ... Добавить задачи
int index = taskList.indexOf(importantTask);
if (index != -1) {
// Вставить новую задачу перед важной задачей
taskList.add(index, newUrgentTask);
}
Qanuilingannguaq 3: Data allangortitinniq
Пример
// ... Ilali data allangortitaqaqtumik
LinkedList<String> uniqueList = new LinkedList<>();
for (String item : listWithDuplicates) {
if (uniqueList.indexOf(item) == -1) {
uniqueList.add(item);
}
}
Примечания
- Suliniq isumaliurutit: Qinirniq aqqutaujut sulianut,
ArrayListизindexOf()ilaaqLinkedListfaster - Ilangit sanilliiniq: Qularnaaqtillugu pijit toqqorsimajut iluanit
LinkedListnaammaktumik atulittailiniqequals()method - Ilakkitaarniq allanngortinniq: Katitiriaq titiqqaq allanngortittauliqtillugu ingerlariini, immaqaa nalliiniaqtuq
ConcurrentModificationException - обработка null: Вы можете искать
nullэлементы, но помните оNullPointerExceptionриски
Итог
LinkedListизindexOf()Метод представляет собой практичный инструмент поиска, который:
- Простой и удобный в использовании, просто передайте элемент для поиска
- Возвращает индекс первого вхождения элемента
- Возвращает -1, если не найдено
- Применим к различным типам объектов, включая
null
Понимание и освоение этого метода поможет вам более эффективно справляться с задачами поиска данных в связных списках.
Другие расширения
Java LinkedList