Комментарии 5
Посыл статьи хороший, но в изложении какая-то каша. Скорее всего, это просто плохой перевод.
Элементы массива доступны по индексу ячейки.
Значение по умолчанию для ячеек – null
Для массивов объектов верно, для массивов примитивов значение зависит от типа компонента (для чисел 0, для булева false).
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) { ... }
Пожалуйста, не надо в 2022 году использовать итераторы в явном виде. Работа с итераторами может пригодится только в одном случае - удаление элементов. В остальных случаях for-each.
ArrayList list = new ArrayList() {{
add("Hello"); // быстрая инициализация
add(" world!");
}};
То, что тут raw-types, спишем на невнимательность. Но не надо так делать, вы же понимаете что тут неявно анонимный класс порождается?
Map – это массив на 16 buckets (корзин) – от 0 до 15.
Расширяется: 16 – 32 – 64 – и далее переходит к структуре red-black tree.
Во-первых, Map это интерфейс, а реализации у него: HashMap, TreeMap и т.д. Во-вторых, система бакетов и в правду применяется у HashMap, и в правду таблица бакетов расширяется до указанного предела 64.. но потом сами бакеты из связанного списка преобразуются в RB-дерево. Таблица бакетов никуда не девается.
Iterator iterator = set.iterator(); // итерация по элементам множества
while(iterator.hasNext()) { ... }
Аналогичное замечание, не надо вручную управлять итераторами.
Классы Hashable
Hashtable, как и упомянутый на диаграмме Vector надо забыть навсегда.
Пакет java.util.concurrent предоставляет реализации одновременных коллекций
Очень странный перевод. "Конкурентные коллекции" – это более чем понятное определение.
public int compare(Person p1, Person p2) {
return p1.uuid - p2.uuid;
}
Если не хотим словить баг, сравнение чисел надо делать через Integer.compare, или используя методы Comparator: compareInt, thenCompareInt.
Статья нагружена ненужными уточнениями, переводом javadoc с таблицей методов, устаревшими примерами кода... и возникает вопрос – ну и чего хотели добиться?
Про comparator можно побольше) интерфейс с первого взгляда прост, но когда встречается надобность в нестандартных сортировках - тут возникают вопросы, а собственно как обращаться к дополнительным элементам. Порой даже приходилось использовать tmp посредник объект для расширения сравнения, возможно есть более правильные конструкции ?!
Поддерживаю, посыл хороший.
Рекомендую при описании функций указывать полную сигнатуру, вместе с классом возвращаемого объекта. Это очень помогает читающему)
Структуры данных Java #неОпятьАСнова #javaJunior