Как работает "Java" "List" метод "size"?

В Java есть интерфейс List и метод size() для вычисления размера List.

  • Когда я вызываю List.size(), как он считается?
  • Он подсчитывается линейно, или подсчет определяется, и только значение возвращается обратно, когда size()?

Ответ 1

Размер определяется как количество элементов в списке. В реализации не указывается, как работает функция члена() итерации по членам, возврату накопленного счета и т.д.), Поскольку List является интерфейсом, а не реализацией.

В целом, большинство конкретных реализаций List будут хранить свой текущий счет локально, делая размер O (1), а не O (n)

Ответ 2

java.util.List - это интерфейс, а не класс. Реализация метода size() может отличаться для разных конкретных реализаций. Разумная реализация метода size() на java.util.List было бы инициализировать член экземпляра типа int до нуля и увеличивать/уменьшать его соответственно, поскольку элементы добавляются/удаляются из List. Метод size() может просто вернуть вышеупомянутый член экземпляра. Это, конечно, просто пример. Для получения полной информации вы всегда можете посмотреть на источники встроенных List. Весь исходный код доступен в течение многих лет.