Продвинутые коллекции в Java
В основном учебнике уже разобраны списки, множества и обычные карты. Здесь пойдем дальше: интерфейсы для очередей, упорядоченные деревья, свои правила сравнения и способы запретить случайные правки коллекции.
Все примеры опираются на стандартный пакет
java.util и актуальны для Java 27. Часть
типов появилась давно, но остается базой для сервисов,
планировщиков задач и кэшей.
Одна и та же задача «хранить и доставать элементы» может решаться разными структурами. Список подходит для произвольного доступа по индексу, очередь фиксирует порядок «кто раньше встал», дерево держит ключи отсортированными:
import java.util.ArrayDeque;
import java.util.List;
import java.util.Queue;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
List<String> log = List.of("start", "save", "stop");
Queue<String> fifo = new ArrayDeque<>(log);
System.out.println(fifo.poll());
TreeSet<Integer> ids = new TreeSet<>(List.of(30, 10, 20));
System.out.println(ids.first());
}
}
Из очереди первым ушел "start", а множество
вернуло наименьший id 10, хотя в исходном
списке числа шли в другом порядке. Дальше разберем
каждый семейство типов и методы карт, которые
избавляют от ручных проверок «есть ли ключ».