Ответ
LinkedHashSet и HashSet оба реализуют интерфейс Set, но различаются порядком хранения элементов:
-
HashSet:
- Не гарантирует порядок элементов.
- Основан на
HashMap. - Быстрее для вставки/удаления (O(1)).
-
LinkedHashSet:
- Сохраняет порядок вставки элементов.
- Основан на
LinkedHashMap. - Немного медленнее из-за поддержки связного списка.
Пример:
val hashSet = HashSet<Int>().apply {
add(3); add(1); add(2)
} // Порядок не гарантирован: [1, 2, 3]
val linkedHashSet = LinkedHashSet<Int>().apply {
add(3); add(1); add(2)
} // Сохранит порядок: [3, 1, 2]
Используйте LinkedHashSet, когда важен порядок вставки, и HashSet для максимальной производительности.