Collections

Java Collections
7 уровень , 9 лекция
Открыта

— А вот и я.

— Я уже давно тебя тут жду.

— Надеюсь. Тогда продолжим.

Представляю тебе супермеганавороченный утилитный класс для коллекций.

— Я уже весь дрожу.

— Отлично. Тогда начнем. Вот методы класса Collections:

Код Пояснение
boolean addAll(Collection<? super T> c, T... elements)
Добавляет переданные элементы в переданную коллекцию.
Удобно использовать в виде Collections.addList(list, 10,11,12,13,14,15)
Queue<T> asLifoQueue(Deque<T>
          
      
          
      
          
      
        deque) 
      
Возвращает «обычную очередь», сделанную из «обратной очереди».
int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
Ищет с помощью двоичного поиска элемент key в списке list.
Список должен быть отсортирован.
Можно задать компаратор для сравнения элементов.
Collection<E> checkedCollection(Collection<E> c, Class<E> type) 
Проверяет, что все элементы коллекции «с» определенного типа «type».
Аналогичные методы существуют для List, Map, Set и SortedSet.
void copy(List<? super T> dest, List<? extends T> src)
Копирует список «src»в список «dest».
boolean disjoint(Collection<?> c1, Collection<?> c2)
 Проверяет, что коллекции не содержат общих элементов
void fill(List<? super T> list, T obj)
 Заполоняет список list, элементом obj
int frequency(Collection<?> c, Object o)
Подсчитывает, сколько раз в коллекции «с» встречается объект «o»
int indexOfSubList(List<?> source, List<?> target)
Определяет индекс, с которого в список source входит список target как подпоследовательность.
Принцип аналогичен String.indexOf(«somestring»)
int lastIndexOfSubList(List<?> source, List<?> target)
Определяет последний индекс, с которого в список source входит список target как подпоследовательность.
Аналогичен String.lastIndexOf(«somestring»)
max(Collection<? extends T> coll)
 Ищет максимальное число/значение в коллекции.
Как найти максимум из 6-и чисел?
Collections.max(Arrays.asList(51, 42, 33, 24, 15, 6));
min(Collection<? extends T> coll)
 Ищет минимальное значение в коллекции.
List<T> nCopies(int n, T o)
 Создает фиктивную коллекцию, которая выглядит так, как будто в ней «n» раз встречается элемент «o».
boolean replaceAll(List<T> list, T oldVal, T newVal)
Заменяет в коллекции list все элементы oldVal на newVal
void reverse(List<?> list)
Разворачивает список задом наперед.
void shuffle(List<?> list)
 Перемешивает элементы списка случайным образом.
List<T> singletonList(T o)
Возвращает неизменяемый список, состоящий из одного переданного элемента.
Аналогичные методы существуют для Map, Set и SortedSet.
void sort(List<T> list)
 Сортирует список по возрастанию.
void swap(List<?> list, int i, int j)
 Меняет элементы списка местами
Collection<T> synchronizedCollection(Collection<T> c)
Оборачивает данную коллекцию в ее синхронизированный аналог.
Аналогичные методы существуют для List, Map, Set и SortedSet.

— Ничего себе! Да это же целый арсенал, а я и десятой части не использовал.

— Собственно, на этом моя сегодняшняя лекция и заканчивается.

Посмотри эти методы, найти те, которые, скорее всего, будешь использовать.

А еще лучше – выучи. Они тебе пригодятся.

— Спасибо тебе, Риша. Пойду учить.

Комментарии (18)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Zim4ik Уровень 51
4 сентября 2025
👁
Alex Уровень 51
12 сентября 2024
У меня одного появился ползунок в этой лекции? Места по бокам полно, читать не удобно, в других такого не было:
Евгений Т. Уровень 39
5 мая 2023
Выучи это такое себе... зубрежка это дело не на долго, как ни зубри все равно забудется со временем
Kurama Уровень 50
31 марта 2023
Как найти максимум из 6-и чисел?

Collections.max(Arrays.asList(51, 42, 33, 24, 15, 6));
Я такой сначала: чее, зачем? А потом подумал, и это ж лучше, чем 5 раз вызывать

Math.max(..., ...)
или проходить циклом, хотя цикл скорее всего встроен в первый метод, хз
Макс Дудин Уровень 41
2 июля 2022
выучи....😳 всё таки надо заучивать? 😞
Denis Odesskiy Уровень 47
11 февраля 2025
Зачем их заучивать? Там же по названиям методов всё понятно, не говоря уже про подсказку из доков при наведении на метод... Просто надо знать и понимать как оно работает. Хотя там и заучивать особенно нечего их не так много этих методов там. П/С: Одна из причин, почему мне нравится Java, — это её многословность. Когда код написан хорошо, переменные и методы подобраны с осмысленными названиями, он читается легко, как книга. А так как все современные IDE поддерживают автозавершение, скорость набора кода не страдает. Читаемость Java-кода лучше, например, по сравнению с Python, где из-за отсутствия скобок и точек с запятой в больших проектах взгляд начинает блуждать по экрану. А если ещё к тому же кто-то решит использовать одну переменную для хранения разных типов данных, то это может создать дополнительные сложности. (На самом деле Пайтон мне тоже нравится😉).
Anemon Уровень 13 Expert
6 апреля 2025
Я считаю тут главное вообще в принципе знать о наличии метода или о том что он может быть. Это для меня сейчас главная проблема. Забываю о методах и пишу сам, а мог бы очень многое сделать куда проще и быстрее х-х
Denis Odesskiy Уровень 47
6 апреля 2025
Полностью согласен, в общем я это и хотел сказать. Ну а так все мы изобретаем велосипеды конечно время от времени😄.
Konstantin Уровень 51
15 ноября 2021
Это я на 9 лекции 7 уровня был. Сейчас я дома уже.
Zaakki Уровень 41
5 августа 2020
не понято, про методы nCopies и singletonList в чем великая идея ?
Ярослав Уровень 40 Master
14 июля 2018
Забыли о unmodifiableList и подобных методах для возврата коллекции, которую нельзя изменить, довольно полезные методы.
Ra Уровень 16 Student
27 июля 2023
а где используются?
MaxLich Уровень 40
22 сентября 2017
Про метод checkedCollection(), по-моему, неправильно сказано. Как я понял из документации, создаётся типобезопасная копия текущей коллекции. И всякий раз, когда будет вставляться объект не того типа в данную копию коллекции, будет бросаться ClassCastException.
LuneFox Уровень 41 Expert
2 марта 2022
Вот и я сразу обратил внимание, что возвращается коллекция, а не boolean.
Vitya Уровень 33
12 июля 2017
nCopies, кому интересно, вернёт immutable list, у всех элементов которого одна и та же ссылка.
Максим Уровень 41
17 января 2019
зачем такое надо?
LuneFox Уровень 41 Expert
2 марта 2022
Техника теневого клонирования :)