В этом случае
Kotlin в основном использует API-интерфейс Collection Java, поэтому вы можете использовать его свободно. API коллекции имеет 4 основных интерфейса:
- Список - упорядоченная последовательность элементов.
- Set - коллекция, в которой нет дубликатов.
- Очередь - коллекция, предназначенная для хранения элементов перед обработкой. Вы можете использовать его интерфейс FIFO. Также он расширен интерфейсом Deque , который поддерживает вставку и удаление элементов на обоих концах.
- Карта - объект, который сопоставляет ключи со значениями.
Большинство потребностей могут быть удовлетворены реализациями этого интерфейса.
Например, LinkedList
в качестве классической c реализации в терминах структуры данных Doubly Linked List; также он реализует Deque
. ArrayList
реализует List
интерфейс с внутренним использованием массива; он имеет гораздо более быстрый доступ к элементам благодаря природе эффективности индексированного доступа к массивам (за исключением случая, когда вы обращаетесь к первому или последнему элементу, потому что он идентичен), но вставки могут стоить вам на вставках не в конце или на вставках когда емкость внутреннего массива превышена, потому что тогда он должен быть повторно инициализирован и пополнен, что является ударом как по времени, так и по пространству. Внутренние Java System#arraycopy
внутренне относительно быстры, хотя.
Оба стека и очереди также могут быть выполнены с ArrayDeque
, что, опять же, является реализацией с поддержкой массива, но в этом случае Deque
.
TreeMap
использует алгоритм красно-черного дерева внутри; TreeSet
использует TreeMap
внутри, если вам нужны отдельные элементы, а не ассоциации.
Для реализаций на основе хеш-таблиц вы можете использовать HashMap
для ассоциаций и HashSet
для отдельных элементов соответственно (та же история с повторным использованием, как для основанных на дереве реализаций).
Для всех других вещей (потокобезопасных тоже - разработанных для параллелизма или простых применений блокировки применения) вы можете фактически найти соответствующие реализации этих интерфейсов - стандартная библиотека достаточно большой.