Collections 0. Collection Flashcards
Collection
Это корневой интерфейс в иерархии коллекций Java. Он представляет собой группу объектов (элементов). Интерфейс предоставляет основные методы для работы с коллекциями, такие как добавление, удаление и проверка наличия элементов.
Конструкторы коллекций
В соответствии с конвенцией, все классы, имплементирующие интерфейс Collection должны иметь два конструктора.
Один пустой. Он создаёт пустую коллекцию.
Второй с единственным аргументом типа Collection. Он создаёт новую коллекцию из имеющейся. Позволяет пользователю копировать коллекцию из одного типа коллекции в другой.
Collection vs Collections
java.util.Collections - набор статических методов для работы с коллекциями.
java.util.Collection - один из основных интерфейсов Java Collections Framework.
Диаграмма Collection
Iterable
Collection<E> (из java.util)
├── List<E> (java.util)
├── Set<E> (java.util)
├── Queue<E> (java.util)
└── BeanContext (java.beans.beancontext)</E></E></E></E>
Iterator
Это объект, который позволяет последовательно обходить элементы коллекции. Он предоставляет методы hasNext(), next(), remove() и forEachRemaining()
fail-fast итератор
это итератор, который выбрасывает исключение, если коллекция изменяется (например, добавляется или удаляется элемент) во время итерации, за исключением случаев, когда изменение происходит через методы самого итератора.
fail-safe итератор
В противоположность fail-fast, итераторы fail-safe не вызывают никаких исключений при изменении структуры, потому что они работают с клоном коллекции вместо оригинала.
Итератор коллекции CopyOnWriteArrayList и итератор представления keySet коллекции ConcurrentHashMap являются примерами итераторов fail-safe.
разница между Iterator и ListIterator
- Iterator может использоваться для перебора элементов Set, List и Map. В отличие от него, ListIterator может быть использован только для перебора элементов коллекции List
- Iterator позволяет перебирать элементы только в одном направлении, при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous()
- При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данную функциональность.
Iterable
Реализует методы iterator и spliterator, которые возвращают одноименные интерфейсы, и void метод forEach.
Iterable vs Iterator
Iterable<T> — это контейнер, который можно перебирать.</T>
Iterator<T> — это механизм для перебора элементов по одному.</T>