Алгоритмы
Серия об алгоритмах, которые решают на стримах: как сравнивать коллекции, искать пары, мерить сходство. Каждая статья показывает цену решения — сколько операций оно делает и как их число растёт, когда данных вдвое больше.
Stream API здесь уже знаком — его объясняет рубрика «Стримы». Сквозной пример — месяц заказов кофейни «Наковальня»; пример каждой статьи запускается одним файлом на Java 25. Это теория к слою mind кузницы Stream Forge.
Опубликовано 6 из 6
«Сравнить коллекции» 1–6
Что общего, что одинаковое, кто на кого похож — и почему перебор всех пар не взлетает.
-
1Множества как алгебра: пересечение, разность, подмножество
Пересечение, объединение, разность и подмножество на месяце кофейни: зачем копия перед retainAll и почему contains у списка стоит n·m.
читать минут 20
-
2Множество как ключ карты: самые популярные комбо
Множество как ключ карты: одной группировкой находим самые популярные комбо, ловим изменённый ключ и считаем, во сколько раз это дешевле пар.
читать минут 20
-
3Пары «все со всеми»: почему n² не взлетает
Сколько стоит перебор всех пар, почему вдвое больше данных — вчетверо больше работы и как сортировка находит самые близкие траты дешевле.
читать минут 20
-
4Пары внутри записи и обратный индекс
Пары внутри заказа, ключ пары без порядка, обратный индекс «позиция → гости» и блокинг: когда они экономят работу, а когда нет.
читать минут 20
-
5Сходство множеств: коэффициент Жаккара
Коэффициент Жаккара: почему доля общего честнее числа общих, что делать с пустыми наборами и NaN, как печатать double и взвешивать по штукам.
читать минут 20
-
6Векторы: косинус, расстояние, ближайшие соседи
Гость как вектор из двенадцати чисел: косинус против расстояния, z-оценка для признаков разного масштаба и пять ближайших соседей одного новичка.
читать минут 20
Попробовать руками
В кузницах Hammerhall — задачи по Java, которые проверяет сервер: решаешь в своей IDE, отправляешь одной командой, проверка запускает твои тесты и закрытые. Сложность растёт вместе с решённым, первые задачи бесплатны.