Как стать автором
Обновить

Комментарии 21

Дело в том, что все источники, которые были использованы в статье — указаны. Статья самописная и копипаста не имеет.
А почему про Stream не написали?
а какое отношение Stream имеет к Java Collections Framework?
Ну как бы все коллекции от него наследуются. И почти все самые важные методы работы с коллекциями содержатся именно там.
Допустим, вы говорите про тот самый Stream, который появился в Java 8. Можете показать хотя бы одну коллекцию, которая наследуется от него?
Блин, и правда мой косяк. Они же все просто имеют метод stream(). Но мне кажется не рассказывать про stream когда говоришь про коллекции уже как-то неправильно.
Стримы это вполне отдельная автономная сущность. Для них коллекции это не более чем источник (коих еще очень много кроме коллекций). Так что лучше рассказывать отдельно.
Еще для начинающих разработчиков следовало бы уточнить затраты по памяти/времени на типичные операции.
Извиняюсь не сразу заметил, что часть характеристик вы указали, но лучше бы увидеть единую таблицу.
Да, я тоже думаю, что таблица не помешает. Как раз сейчас работаю над этим
Пара неточностей, как мне кажется:

HashSet — реализация интерфейса Set, базирующаяся на HashTable. Внутри использует объект HashMap для хранения данных.

Не очень понял почему базируется на HashTable, если под капотом HashMap?

LinkedHashSet — отличается от HashSet только тем, что в основе лежит LinkedHashSet вместо HashSet.

Наверно, здесь имелось в виду, что в основе лежит LinkedHashMap вместо HashMap?
Спасибо за правку. Действительно немного напутал. Исправил
Как было сказано в начале, статья — не является подробным обзором, а лишь краткий справочник. И, как Вы могли заметить, я указал эти статьи в качестве дополнительного материала для более детального ознакомления
Да, не заметил сразу. Извиняюсь.
Также в статье можно было бы показать какие улучшения получили HashMap в java8.
Всё дело в том, что статья и так получилась довольно объёмная. А нововведения и изменения Collections Framework в Java 8 — это материал для другой вполне самодостаточной статьи. Тем более что целью статьи было всё же создать лаконичный справочник-памятку, а не подробный анализ.
Но Вы приводите ссылку на более раннюю статью, в которой написано, что на один bucket приходится цепочка элементов. Важный момент в java8 — это то, что теперь bucket ссылается на бинарное дерево. и мне кажется, это стоит упоминания.
Биндерево только когда длинна цепочки превышает 8, что при адекватном лоад факторе и вменяемой реализации хеш-кода не происходит никогда.
Ну то что в Java 8 bucket — бинарное дерево — не совсем верно. Потому как деревом он становится только в том случае, если его размер больше TREEIFY_THRESHOLD. Причём данный процесс оборотный, то есть если по каким-то причинам bucket становится снова меньше, то он возвращается к «плоской» структуре (односвязный список). Но, так как в данной статье не объясняется внутреннее устройство коллекций, то для того чтобы связно изложить этот материал, прийдётся углубляться, что не помещается в рамки этого поста.

Но Ваше замечание действительно достойное внимания, потому считаю, что лучшим решением будет уточнить актуальность ссылки. Что и сделано.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.