Метод Java LinkedList size()

Java LinkedList Java LinkedList


size()Метод находится в JavaLinkedListчасто используемый метод, предоставляемый классом, который принадлежитjava.utilпакету. Основное назначение этого метода — возвращать количество элементов в текущем связанном списке.

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

public int size()

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

  • Возвращаетintзначение типа, представляющее количество элементов в связанном списке
  • Если связанный список пуст, возвращается 0

Характеристики метода

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

size()Временная сложность метода — O(1), что означает: независимо от того, сколько элементов содержит связанный список, время получения размера постоянно.

Это потому, чтоLinkedListкласс внутренне поддерживаетsizeпеременную, которая автоматически обновляется при добавлении или удалении элементов. Вызовsize()метода просто возвращает значение этой переменной.

Отличие от Array length

Новички иногда путаютsize()метод со свойством массиваlengthсвойство:

  • У массиваlengthявляется свойством, которое представляет вместимость массива
  • LinkedListизsize()является методом, который возвращает количество фактически сохранённых элементов

Потокобезопасность

size()Сам метод не является потокобезопасным. При использовании в многопоточной среде требуются дополнительные меры синхронизации.


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

Базовое использование

Пример

import java.util.LinkedList;

public class LinkedListSizeDemo {
    public static void main(String[] args) {
        // Создаём LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Добавить элементы
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
       
        // Используйте метод size() для получения количества элементов
        int size = fruits.size();
        System.out.println("Количество элементов в LinkedList: " + size); // Вывод: 3
    }
}

Случай пустого связанного списка

Пример

import java.util.LinkedList;

public class EmptyLinkedListDemo {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
        System.out.println("Размер пустого связного списка: " + numbers.size()); // Вывод: 0
    }
}

Демонстрация динамического изменения

Пример

import java.util.LinkedList;

public class DynamicSizeDemo {
    public static void main(String[] args) {
        LinkedList<Character> letters = new LinkedList<>();
        System.out.println("Начальный размер: " + letters.size()); // 0
       
        letters.add('A');
        letters.add('B');
        System.out.println("После добавления двух элементов: " + letters.size()); // 2
       
        letters.removeFirst();
        System.out.println("После удаления одного элемента: " + letters.size()); // 1
       
        letters.clear();
        System.out.println("После очистки: " + letters.size()); // 0
    }
}

Часто задаваемые вопросы

Выбрасывает ли метод size() исключение?

size()Метод обычно не выбрасывает исключение. Даже если связный список равен null (примечание: не пустой связный список), вызовsize()метода не выбросит исключение, но выброситNullPointerException。

Пример

LinkedList<String> list = null;
// Следующая строка вызовет NullPointerException
System.out.println(list.size());

Связь между size() и isEmpty()

isEmpty()Метод основан наsize()реализация метода:

Пример

public boolean isEmpty() {
    return size() == 0;
}

Следовательно,list.isEmpty()эквивалентноlist.size() == 0, но первый вариант обладает лучшей читаемостью.


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

Обход в цикле

Пример

LinkedList<String> colors = new LinkedList<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");

for (int i = 0; i < colors.size(); i++) {
    System.out.println(colors.get(i));
}

Проверка ёмкости

Пример

LinkedList<Integer> queue = new LinkedList<>();
// ...добавить элементы...

if (queue.size() > 10) {
    System.out.println("Очередь заполнена, нельзя добавить больше элементов");
}

Сравнение с другими коллекциями

Пример

LinkedList<String> list1 = new LinkedList<>();
LinkedList<String> list2 = new LinkedList<>();

// ...заполнить два связных списка...

if (list1.size() == list2.size()) {
    System.out.println("Два связных списка имеют одинаковый размер");
}

Соображения производительности

Хотяsize()сам метод имеет временную сложность O(1), в некоторых случаях частый вызовsize()может повлиять на производительность:

  1. Многопоточная среда: каждый вызовsize()должен читать из памятиsizevariable
  2. Сложные условия цикла: например,for (int i = 0; i < list.size(); i++), вызывая его на каждой итерации циклаsize()

Во втором случае это можно оптимизировать так:

Пример

int size = list.size();
for (int i = 0; i < size; i++) {
    // Тело цикла
}

Итог

LinkedListизsize()Этот метод — простой, но очень важный метод, который предоставляет возможность быстро получить текущее количество элементов в связном списке. Понимание принципа работы и особенностей этого метода помогает писать более эффективный и надёжный код на Java.

Помните:

  • size()Он возвращает количество элементов, а не ёмкость
  • У пустого связного спискаsize()возвращает 0
  • При использовании его в многопоточной среде нужно обращать внимание на проблемы синхронизации
  • Его можно комбинировать сisEmpty()метод, чтобы сделать код более понятным

Java LinkedList Java LinkedList

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