Типичные источники:
→
→
→
→
→
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥1
generics дают
Из-за стирания нельзя:
→
→
→
→
Частичная информация о дженериках сохраняется в сигнатурах полей и методов и доступна через рефлексию, но не на уровне конкретных экземпляров.
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1👏1
Это правило выбора
? extends T — ковариантность, структура-«производитель»: из неё можно безопасно
? super T — контравариантность, структура-«потребитель»: в неё можно безопасно
Отсюда мнемоника: если коллекция только отдаёт данные (producer) →
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1👏1
Контракт: если два объекта равны по equals(),
Если переопределить equals() и забыть про hashCode(), объект сломается в
Дополнительно equals() должен быть
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
В подавляющем большинстве случаев →
ArrayList — это динамический массив: доступ по индексу
LinkedList — двусвязный список: вставка/удаление по уже найденной позиции
LinkedList оправдан редко — например, когда нужен
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👏2🔥1
HashMap —
Hashtable —
ConcurrentHashMap —
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏1
fail-fast (ArrayList, HashMap)
fail-safe (CopyOnWriteArrayList, ConcurrentHashMap)
- CopyOnWriteArrayList при модификации копирует внутренний массив, итератор работает со «снимком» старого состояния;
- итератор ConcurrentHashMap слабо-согласованный (weakly consistent) — отражает состояние на момент создания или позже, без жёстких гарантий.
Fail-safe безопасны в многопоточке, но итератор может не видеть свежие изменения и обходятся дороже по памяти.
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Наследование — это отношение
Проблемы наследования:
Композиция более гибкая:
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1👏1
Оба не позволяют
List.of() (Java 9) создаёт
Collections.unmodifiableList() создаёт
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4👏1
— HashSet
— LinkedHashSet
— TreeSet
Выбор:
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
fail-fast итератор
Механизм:
Чтобы безопасно удалять во время обхода:
→
→
→
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1👏1
IO (Input/Output) — это
NIO (New IO) был введён в JDK 1.4 для
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3👍1🔥1
Autoboxing —
Unboxing —
Удобно, но есть подводные камни
—
—
—
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1