Класс Collections
public final class Collections extends Object
Все методы этого класса выбрасывают NullPointerException, если переданные им коллекции или объекты классов равны null.
Документация полиморфных алгоритмов, содержащихся в этом классе, обычно включает краткое описание реализации. Такие описания следует рассматривать как примечания к реализации, а не как часть спецификации. Разработчики могут использовать другие алгоритмы при условии соблюдения самой спецификации. (Например, алгоритм, используемый sort, не обязательно должен быть сортировкой слиянием, но он должен быть устойчивым.)
Для «разрушающих» алгоритмов этого класса, то есть алгоритмов, изменяющих коллекцию, с которой они работают, указано, что они выбрасывают UnsupportedOperationException, если коллекция не поддерживает соответствующие операции изменения, например метод set. Эти алгоритмы могут выбрасывать это исключение, если вызов не оказал бы влияния на коллекцию, но не обязаны этого делать. Например, вызов метода sort для неизменяемого списка, который уже отсортирован, может как выбросить, так и не выбросить UnsupportedOperationException.
Этот класс входит в состав Java Collections Framework.
- С версии:
- 1.2
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final List |
EMPTY_LIST |
Пустой список (неизменяемый). |
static final Map |
EMPTY_MAP |
Пустая карта (неизменяемая). |
static final Set |
EMPTY_SET |
Пустое множество (неизменяемое). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <T> boolean |
addAll |
Добавляет все указанные элементы в указанную коллекцию. |
static <T> Queue |
asLifoQueue |
|
static <T> int |
binarySearch |
Выполняет двоичный поиск указанного объекта в указанном списке. |
static <T> int |
binarySearch |
Выполняет двоичный поиск указанного объекта в указанном списке. |
static <E> Collection |
checkedCollection |
Возвращает динамически типобезопасное представление указанной коллекции. |
static <E> List |
checkedList |
Возвращает динамически типобезопасное представление указанного списка. |
static <K, |
checkedMap |
Возвращает динамически типобезопасное представление указанной карты. |
static <K, |
checkedNavigableMap |
Возвращает динамически типобезопасное представление указанной навигационной карты. |
static <E> NavigableSet |
checkedNavigableSet |
Возвращает динамически типобезопасное представление указанного навигационного множества. |
static <E> Queue |
checkedQueue |
Возвращает динамически типобезопасное представление указанной очереди. |
static <E> Set |
checkedSet |
Возвращает динамически типобезопасное представление указанного множества. |
static <K, |
checkedSortedMap |
Возвращает динамически типобезопасное представление указанной отсортированной карты. |
static <E> SortedSet |
checkedSortedSet |
Возвращает динамически типобезопасное представление указанного отсортированного множества. |
static <T> void |
copy |
Копирует все элементы из одного списка в другой. |
static boolean |
disjoint |
Возвращает true, если указанные коллекции не содержат общих элементов. |
static <T> Enumeration |
emptyEnumeration() |
Возвращает перечисление, не содержащее элементов. |
static <T> Iterator |
emptyIterator() |
Возвращает итератор, не содержащий элементов. |
static final <T> List |
emptyList() |
Возвращает пустой список (неизменяемый). |
static <T> ListIterator |
emptyListIterator() |
Возвращает итератор списка, не содержащий элементов. |
static final <K, |
emptyMap() |
Возвращает пустую карту (неизменяемую). |
static final <K, |
emptyNavigableMap() |
Возвращает пустую навигационную карту (неизменяемую). |
static <E> NavigableSet |
emptyNavigableSet() |
Возвращает пустое навигационное множество (неизменяемое). |
static final <T> Set |
emptySet() |
Возвращает пустое множество (неизменяемое). |
static final <K, |
emptySortedMap() |
Возвращает пустую отсортированную карту (неизменяемую). |
static <E> SortedSet |
emptySortedSet() |
Возвращает пустое отсортированное множество (неизменяемое). |
static <T> Enumeration |
enumeration |
Возвращает перечисление элементов указанной коллекции. |
static <T> void |
fill |
Заменяет все элементы указанного списка заданным элементом. |
static int |
frequency |
Возвращает количество элементов указанной коллекции, равных заданному объекту. |
static int |
indexOfSubList |
Возвращает начальную позицию первого вхождения указанного целевого списка в указанном исходном списке или -1, если такого вхождения нет. |
static int |
lastIndexOfSubList |
Возвращает начальную позицию последнего вхождения указанного целевого списка в указанном исходном списке или -1, если такого вхождения нет. |
static <T> ArrayList |
list |
Возвращает список-массив, содержащий элементы, возвращённые указанным перечислением, в том порядке, в котором они возвращаются этим перечислением. |
static <T extends Object & Comparable<? super T>> |
max |
Возвращает максимальный элемент заданной коллекции согласно естественному порядку её элементов. |
static <T> T |
max |
Возвращает максимальный элемент заданной коллекции согласно порядку, определяемому указанным компаратором. |
static <T extends Object & Comparable<? super T>> |
min |
Возвращает минимальный элемент заданной коллекции согласно естественному порядку её элементов. |
static <T> T |
min |
Возвращает минимальный элемент заданной коллекции согласно порядку, определяемому указанным компаратором. |
static <T> List |
nCopies |
Возвращает неизменяемый список, состоящий из n копий указанного объекта. |
static <E> SequencedSet |
newSequencedSetFromMap |
Возвращает упорядоченное множество, основанное на указанной карте. |
static <E> Set |
newSetFromMap |
Возвращает множество, основанное на указанной карте. |
static <T> boolean |
replaceAll |
Заменяет все вхождения одного указанного значения в списке другим значением. |
static void |
reverse |
Изменяет порядок элементов указанного списка на обратный. |
static <T> Comparator |
reverseOrder() |
Возвращает компаратор, задающий обратный естественный порядок для коллекции объектов, реализующих интерфейс Comparable. |
static <T> Comparator |
reverseOrder |
Возвращает компаратор, задающий порядок, обратный порядку указанного компаратора. |
static void |
rotate |
Циклически сдвигает элементы указанного списка на заданное расстояние. |
static void |
shuffle |
Случайным образом переставляет элементы указанного списка, используя источник случайности по умолчанию. |
static void |
shuffle |
Случайным образом переставляет элементы указанного списка, используя указанный источник случайности. |
static void |
shuffle |
Случайным образом переставляет элементы указанного списка, используя указанный источник случайности. |
static <T> Set |
singleton |
Возвращает неизменяемое множество, содержащее только указанный объект. |
static <T> List |
singletonList |
Возвращает неизменяемый список, содержащий только указанный объект. |
static <K, |
singletonMap |
Возвращает неизменяемую карту, сопоставляющую указанному ключу только указанное значение. |
static <T extends Comparable<? super T>> |
sort |
Сортирует указанный список по возрастанию согласно естественному порядку его элементов. |
static <T> void |
sort |
Сортирует указанный список согласно порядку, определяемому указанным компаратором. |
static void |
swap |
Меняет местами элементы указанного списка, находящиеся в заданных позициях. |
static <T> Collection |
synchronizedCollection |
Возвращает синхронизированную (потокобезопасную) коллекцию, основанную на указанной коллекции. |
static <T> List |
synchronizedList |
Возвращает синхронизированный (потокобезопасный) список, основанный на указанном списке. |
static <K, |
synchronizedMap |
Возвращает синхронизированную (потокобезопасную) карту, основанную на указанной карте. |
static <K, |
synchronizedNavigableMap |
Возвращает синхронизированную (потокобезопасную) навигационную карту, основанную на указанной навигационной карте. |
static <T> NavigableSet |
synchronizedNavigableSet |
Возвращает синхронизированное (потокобезопасное) навигационное множество, основанное на указанном навигационном множестве. |
static <T> Set |
synchronizedSet |
Возвращает синхронизированное (потокобезопасное) множество, основанное на указанном множестве. |
static <K, |
synchronizedSortedMap |
Возвращает синхронизированную (потокобезопасную) отсортированную карту, основанную на указанной отсортированной карте. |
static <T> SortedSet |
synchronizedSortedSet |
Возвращает синхронизированное (потокобезопасное) отсортированное множество, основанное на указанном отсортированном множестве. |
static <T> Collection |
unmodifiableCollection |
Возвращает неизменяемое представление указанной коллекции. |
static <T> List |
unmodifiableList |
Возвращает неизменяемое представление указанного списка. |
static <K, |
unmodifiableMap |
Возвращает неизменяемое представление указанной карты. |
static <K, |
unmodifiableNavigableMap |
Возвращает неизменяемое представление указанной навигационной карты. |
static <T> NavigableSet |
unmodifiableNavigableSet |
Возвращает неизменяемое представление указанного навигационного множества. |
static <T> SequencedCollection |
unmodifiableSequencedCollection |
Возвращает неизменяемое представление указанного SequencedCollection. |
static <K, |
unmodifiableSequencedMap |
Возвращает неизменяемое представление указанного SequencedMap. |
static <T> SequencedSet |
unmodifiableSequencedSet |
Возвращает неизменяемое представление указанного SequencedSet. |
static <T> Set |
unmodifiableSet |
Возвращает неизменяемое представление указанного множества. |
static <K, |
unmodifiableSortedMap |
Возвращает неизменяемое представление указанной отсортированной карты. |
static <T> SortedSet |
unmodifiableSortedSet |
Возвращает неизменяемое представление указанного отсортированного множества. |
Подробное описание полей
EMPTY_SET
public static final Set EMPTY_SET
- См. также:
EMPTY_LIST
public static final List EMPTY_LIST
- См. также:
EMPTY_MAP
public static final Map EMPTY_MAP
- Начиная с версии:
- 1.3
- См. также:
Подробное описание методов
sort
public static <T extends Comparable<? super T>> void sort(List<T> list)
Comparable. Кроме того, все элементы списка должны быть взаимно сравнимы (то есть e1.compareTo(e2) не должен выбрасывать ClassCastException для любых элементов e1 и e2 списка). Эта сортировка гарантированно является устойчивой: равные элементы не меняют порядок в результате сортировки.
Указанный список должен допускать изменение, но не обязательно изменение размера.
- Примечание по реализации:
- Эта реализация делегирует выполнение методу
List.sort(Comparator), используя указанный список и компараторnull. - Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список для сортировки. - Исключения:
-
ClassCastException— если список содержит элементы, которые не являются взаимно сравнимыми (например, строки и целые числа). -
UnsupportedOperationException— если итератор списка указанного списка не поддерживает операциюset. -
IllegalArgumentException— (необязательно) если реализация обнаружит, что естественный порядок элементов списка нарушает контрактComparable - См. также:
sort
public static <T> void sort(List<T> list, Comparator<? super T> c)
c.compare(e1, e2) не должен выбрасывать ClassCastException для любых элементов e1 и e2 списка). Эта сортировка гарантированно является устойчивой: равные элементы не меняют порядок в результате сортировки.
Указанный список должен допускать изменение, но не обязательно изменение размера.
- Примечание по реализации:
- Эта реализация делегирует выполнение методу
List.sort(Comparator), используя указанный список и компаратор. - Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список для сортировки. -
c— компаратор, определяющий порядок списка. Значениеnullозначает, что следует использовать естественный порядок элементов. - Исключения:
-
ClassCastException— если список содержит элементы, которые не являются взаимно сравнимыми с помощью указанного компаратора. -
UnsupportedOperationException— если итератор списка указанного списка не поддерживает операциюset. -
IllegalArgumentException— (необязательно) если компаратор нарушает контрактComparator - См. также:
binarySearch
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
sort(List)). Если список не отсортирован, результаты не определены. Если список содержит несколько элементов, равных указанному объекту, не гарантируется, какой из них будет найден. Для списка с «произвольным доступом» (обеспечивающего почти постоянное время доступа к элементам по позиции) этот метод выполняется за время log(n). Если указанный список не реализует интерфейс RandomAccess и является большим, этот метод выполнит двоичный поиск на основе итератора, который требует O(n) переходов по связям и O(log n) сравнений элементов.
- Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список для поиска. -
key— искомый ключ. - Возвращает:
- индекс ключа поиска, если он содержится в списке; в противном случае —
(-(insertion point) - 1). Точка вставки определяется как позиция, в которую ключ был бы вставлен в список: индекс первого элемента, превышающего ключ, илиlist.size(), если все элементы списка меньше указанного ключа. Обратите внимание: это гарантирует, что возвращаемое значение будет >= 0 тогда и только тогда, когда ключ найден. - Исключения:
-
ClassCastException— если список содержит элементы, которые не являются взаимно сравнимыми (например, строки и целые числа), или если ключ поиска нельзя сравнить с элементами списка.
binarySearch
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
sort(List, Comparator)). Если список не отсортирован, результаты не определены. Если список содержит несколько элементов, равных указанному объекту, не гарантируется, какой из них будет найден. Для списка с «произвольным доступом» (обеспечивающего почти постоянное время доступа к элементам по позиции) этот метод выполняется за время log(n). Если указанный список не реализует интерфейс RandomAccess и является большим, этот метод выполнит двоичный поиск на основе итератора, который требует O(n) переходов по связям и O(log n) сравнений элементов.
- Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список для поиска. -
key— искомый ключ. -
c— компаратор, задающий порядок списка. Значениеnullозначает, что следует использовать естественный порядок элементов. - Возвращает:
- индекс ключа поиска, если он содержится в списке; в противном случае —
(-(insertion point) - 1). Точка вставки определяется как позиция, в которую ключ был бы вставлен в список: индекс первого элемента, превышающего ключ, илиlist.size(), если все элементы списка меньше указанного ключа. Обратите внимание: это гарантирует, что возвращаемое значение будет >= 0 тогда и только тогда, когда ключ найден. - Исключения:
-
ClassCastException— если список содержит элементы, которые не являются взаимно сравнимыми с помощью указанного компаратора, или если ключ поиска нельзя сравнить с элементами списка с помощью этого компаратора.
reverse
public static void reverse(List<?> list)
Этот метод выполняется за линейное время.
- Примечание к API:
- Этот метод изменяет указанный список на месте. Чтобы получить представление списка в обратном порядке без изменения самого списка, используйте метод
List.reversed. - Параметры:
-
list— список, порядок элементов которого необходимо изменить на обратный. - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset. - См. также:
shuffle
public static void shuffle(List<?> list)
Оговорка «приблизительно» используется в предыдущем описании, поскольку источник случайности по умолчанию является лишь приблизительно несмещённым источником независимо выбранных битов. Если бы он был идеальным источником случайно выбранных битов, алгоритм выбирал бы перестановки с абсолютной равномерностью.
Эта реализация проходит по списку в обратном направлении, от последнего элемента до второго, каждый раз меняя местами случайно выбранный элемент с элементом в «текущей позиции». Элементы случайным образом выбираются из части списка от первого элемента до текущей позиции включительно.
- Требования к реализации:
- Этот метод выполняется за линейное время. Если указанный список не реализует интерфейс
RandomAccessи является большим, эта реализация перед перемешиванием копирует указанный список в массив, а затем копирует перемешанный массив обратно в список. Это позволяет избежать квадратичного времени выполнения, которое потребовалось бы при перемешивании списка с «последовательным доступом» на месте. - Параметры:
-
list— список для перемешивания. - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset.
shuffle
public static void shuffle(List<?> list, Random rnd)
Этот метод эквивалентен shuffle(List, RandomGenerator) и существует для обратной совместимости. Предпочтительно использовать метод shuffle(List, RandomGenerator), поскольку он не ограничен генераторами случайных чисел, расширяющими класс Random.
- Параметры:
-
list— список для перемешивания. -
rnd— источник случайности для перемешивания списка. - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset.
shuffle
public static void shuffle(List<?> list, RandomGenerator rnd)
Эта реализация проходит по списку в обратном направлении, от последнего элемента до второго, каждый раз меняя местами случайно выбранный элемент с элементом в «текущей позиции». Элементы случайным образом выбираются из части списка от первого элемента до текущей позиции включительно.
- Требования к реализации:
- Этот метод выполняется за линейное время. Если указанный список не реализует интерфейс
RandomAccessи является большим, эта реализация перед перемешиванием копирует указанный список в массив, а затем копирует перемешанный массив обратно в список. Это позволяет избежать квадратичного времени выполнения, которое потребовалось бы при перемешивании списка с «последовательным доступом» на месте. - Параметры:
-
list— список для перемешивания. -
rnd— источник случайности для перемешивания списка. - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset. - Начиная с версии:
- 21
swap
public static void swap(List<?> list, int i, int j)
- Параметры:
-
list— список, в котором необходимо поменять элементы местами. -
i— индекс одного из элементов для обмена. -
j— индекс другого элемента для обмена. - Исключения:
-
IndexOutOfBoundsException— еслиiилиjнаходится вне допустимого диапазона (i < 0 || i >= list.size() || j < 0 || j >= list.size()). - Начиная с версии:
- 1.4
fill
public static <T> void fill(List<? super T> list, T obj)
Этот метод выполняется за линейное время.
- Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список, который необходимо заполнить заданным элементом. -
obj— элемент, которым необходимо заполнить указанный список. - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset.
copy
public static <T> void copy(List<? super T> dest, List<? extends T> src)
Этот метод выполняется за линейное время.
- Параметры типа:
T— класс объектов в списках- Параметры:
-
dest— целевой список. -
src— исходный список. - Исключения:
-
IndexOutOfBoundsException— если целевой список слишком мал, чтобы вместить весь исходный список. -
UnsupportedOperationException— если итератор целевого списка не поддерживает операциюset.
min
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Comparable. Кроме того, все элементы коллекции должны быть взаимно сравнимы (то есть e1.compareTo(e2) не должен выбрасывать ClassCastException для любых элементов e1 и e2 коллекции).Этот метод перебирает всю коллекцию, поэтому время его выполнения пропорционально размеру коллекции.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
coll— коллекция, минимальный элемент которой необходимо определить. - Возвращает:
- минимальный элемент заданной коллекции в соответствии с естественным порядком её элементов.
- Исключения:
-
ClassCastException— если коллекция содержит элементы, которые не являются взаимно сравнимыми (например, строки и целые числа). -
NoSuchElementException— если коллекция пуста. - См. также:
min
public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
comp.compare(e1, e2) не должен выбрасывать ClassCastException для любых элементов e1 и e2 коллекции).Этот метод перебирает всю коллекцию, поэтому время его выполнения пропорционально размеру коллекции.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
coll— коллекция, минимальный элемент которой необходимо определить. -
comp— компаратор для определения минимального элемента. Значениеnullозначает, что следует использовать естественный порядок элементов. - Возвращает:
- минимальный элемент заданной коллекции в соответствии с указанным компаратором.
- Исключения:
-
ClassCastException— если коллекция содержит элементы, которые не являются взаимно сравнимыми с помощью указанного компаратора. -
NoSuchElementException— если коллекция пуста. - См. также:
max
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
Comparable. Кроме того, все элементы коллекции должны быть взаимно сравнимы (то есть e1.compareTo(e2) не должен выбрасывать ClassCastException для любых элементов e1 и e2 коллекции).Этот метод перебирает всю коллекцию, поэтому время его выполнения пропорционально размеру коллекции.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
coll— коллекция, максимальный элемент которой необходимо определить. - Возвращает:
- максимальный элемент заданной коллекции в соответствии с естественным порядком её элементов.
- Исключения:
-
ClassCastException— если коллекция содержит элементы, которые не являются взаимно сравнимыми (например, строки и целые числа). -
NoSuchElementException— если коллекция пуста. - См. также:
max
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
comp.compare(e1, e2) не должен выбрасывать ClassCastException для любых элементов e1 и e2 коллекции).Этот метод перебирает всю коллекцию, поэтому время его выполнения пропорционально размеру коллекции.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
coll— коллекция, максимальный элемент которой необходимо определить. -
comp— компаратор для определения максимального элемента. Значениеnullозначает, что следует использовать естественный порядок элементов. - Возвращает:
- максимальный элемент заданной коллекции в соответствии с указанным компаратором.
- Исключения:
-
ClassCastException— если коллекция содержит элементы, которые не являются взаимно сравнимыми с помощью указанного компаратора. -
NoSuchElementException— если коллекция пуста. - См. также:
rotate
public static void rotate(List<?> list, int distance)
i будет элементом, ранее находившимся по индексу (i - distance) mod list.size(), для всех значений i от 0 до list.size()-1 включительно. (Этот метод не изменяет размер списка.) Например, предположим, что list состоит из [t, a, n, k, s]. После вызова Collections.rotate(list, 1) (или Collections.rotate(list, -4)) list будет состоять из [s, t, a, n, k].
Обратите внимание, что этот метод можно эффективно применять к подспискам, чтобы переместить один или несколько элементов внутри списка, сохранив порядок остальных элементов. Например, следующий шаблон перемещает элемент с индексом j вперёд на позицию k (которая должна быть больше или равна j):
Collections.rotate(list.subList(j, k+1), -1);
Для наглядности предположим, что list состоит из [a, b, c, d, e]. Чтобы переместить элемент с индексом 1 (b) вперёд на две позиции, выполните следующий вызов:
Collections.rotate(l.subList(1, 4), -1);
Полученный список — [a, c, d, b, e]. Чтобы переместить вперёд более одного элемента, увеличьте абсолютное значение расстояния сдвига. Для перемещения элементов назад используйте положительное расстояние сдвига.
Если указанный список невелик или реализует интерфейс RandomAccess, эта реализация перемещает первый элемент в нужное место, а затем последовательно перемещает вытесненный элемент в нужное место, пока какой-либо вытесненный элемент не будет перемещён на место первого. При необходимости процесс повторяется для второго и последующих элементов до завершения сдвига. Если указанный список велик и не реализует интерфейс RandomAccess, эта реализация делит список на два представления подсписков по индексу -distance mod size. Затем метод reverse(List) вызывается для каждого представления подсписка, а затем для всего списка. Более подробное описание обоих алгоритмов см. в разделе 2.3 книги Джона Бентли Programming Pearls (Addison-Wesley, 1986).
- Параметры:
-
list— список для циклического сдвига. -
distance— расстояние циклического сдвига списка. Ограничений на это значение нет: оно может быть нулевым, отрицательным или превышатьlist.size(). - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset. - Начиная с версии:
- 1.4
replaceAll
public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)
newVal каждый элемент e в list, для которого (oldVal==null ? e==null : oldVal.equals(e)). (Этот метод не изменяет размер списка.)- Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список, в котором выполняется замена. -
oldVal— заменяемое старое значение. -
newVal— новое значение, которым заменяетсяoldVal. - Возвращает:
-
true, еслиlistсодержал один или несколько элементовe, для которых(oldVal==null ? e==null : oldVal.equals(e)). - Исключения:
-
UnsupportedOperationException— если указанный список или его итератор не поддерживает операциюset. - Начиная с версии:
- 1.4
indexOfSubList
public static int indexOfSubList(List<?> source, List<?> target)
i, для которого source.subList(i, i+target.size()).equals(target), или -1, если такого индекса нет. (Возвращает -1, если target.size() > source.size()) В этой реализации используется метод «полного перебора»: исходный список просматривается в поисках совпадения с целевым списком в каждой позиции по очереди.
- Параметры:
-
source— список, в котором выполняется поиск первого вхожденияtarget. -
target— список, который необходимо найти как подсписокsource. - Возвращает:
- начальную позицию первого вхождения указанного целевого списка в указанном исходном списке или -1, если такое вхождение отсутствует.
- Начиная с версии:
- 1.4
lastIndexOfSubList
public static int lastIndexOfSubList(List<?> source, List<?> target)
i, для которого source.subList(i, i+target.size()).equals(target), или -1, если такого индекса нет. (Возвращает -1, если target.size() > source.size()) В этой реализации используется метод «полного перебора»: исходный список просматривается в поисках совпадения с целевым списком в каждой позиции по очереди.
- Параметры:
-
source— список, в котором выполняется поиск последнего вхожденияtarget. -
target— список, который необходимо найти как подсписокsource. - Возвращает:
- начальную позицию последнего вхождения указанного целевого списка в указанном исходном списке или -1, если такое вхождение отсутствует.
- Начиная с версии:
- 1.4
unmodifiableCollection
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
UnsupportedOperationException. Возвращаемая коллекция не передаёт операции hashCode и equals базовой коллекции, а полагается на методы equals и hashCode класса Object. Это необходимо для сохранения контрактов этих операций в том случае, если базовая коллекция является множеством или списком.
Возвращаемая коллекция будет сериализуемой, если указанная коллекция сериализуема.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
c— коллекция, для которой требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанной коллекции.
unmodifiableSequencedCollection
public static <T> SequencedCollection<T> unmodifiableSequencedCollection(SequencedCollection<? extends T> c)
SequencedCollection. Операции чтения над возвращаемой коллекцией выполняются непосредственно с указанной коллекцией, а попытки изменить возвращаемую коллекцию — напрямую или через её итератор — приводят к UnsupportedOperationException. Возвращаемая коллекция не передаёт операции hashCode и equals базовой коллекции, а полагается на методы equals и hashCode класса Object. Это необходимо для сохранения контрактов этих операций в том случае, если базовая коллекция является множеством или списком.
Возвращаемая коллекция будет сериализуемой, если указанная коллекция сериализуема.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
c— коллекция, для которой требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанной коллекции.
- С версии:
- 21
unmodifiableSet
public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
UnsupportedOperationException.Возвращаемое множество будет сериализуемым, если указанное множество сериализуемо.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
T— класс объектов во множестве- Параметры:
-
s— множество, для которого требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанного множества.
unmodifiableSequencedSet
public static <T> SequencedSet<T> unmodifiableSequencedSet(SequencedSet<? extends T> s)
SequencedSet. Операции чтения над возвращаемым множеством выполняются непосредственно с указанным множеством, а попытки изменить возвращаемое множество — напрямую или через его итератор — приводят к UnsupportedOperationException.Возвращаемое множество будет сериализуемым, если указанное множество сериализуемо.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
T— класс объектов во множестве- Параметры:
-
s— множество, для которого требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанного упорядоченного множества.
- С версии:
- 21
unmodifiableSortedSet
public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
subSet, headSet или tailSet — приводят к UnsupportedOperationException.Возвращаемое отсортированное множество будет сериализуемым, если указанное отсортированное множество сериализуемо.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
T— класс объектов во множестве- Параметры:
-
s— отсортированное множество, для которого требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанного отсортированного множества.
unmodifiableList
public static <T> List<T> unmodifiableList(List<? extends T> list)
UnsupportedOperationException. Возвращаемый список будет сериализуемым, если указанный список сериализуем. Аналогично, возвращаемый список будет реализовывать RandomAccess, если это делает указанный список.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список, для которого требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанного списка.
unmodifiableMap
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m)
UnsupportedOperationException.Возвращаемая карта будет сериализуемой, если указанная карта сериализуема.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— карта, для которой требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанной карты.
unmodifiableSequencedMap
public static <K,V> SequencedMap<K,V> unmodifiableSequencedMap(SequencedMap<? extends K, ? extends V> m)
SequencedMap. Операции чтения над возвращаемой картой выполняются непосредственно с указанной картой, а попытки изменить возвращаемую карту — напрямую или через её представления-коллекции — приводят к UnsupportedOperationException.Возвращаемая карта будет сериализуемой, если указанная карта сериализуема.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— карта, для которой требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанной карты.
- С версии:
- 21
unmodifiableSortedMap
public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K, ? extends V> m)
subMap, headMap или tailMap — приводят к UnsupportedOperationException.Возвращаемая отсортированная карта будет сериализуемой, если указанная отсортированная карта сериализуема.
- Примечание по реализации:
- Этот метод может вернуть свой аргумент, если он уже является неизменяемым.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— отсортированная карта, для которой требуется вернуть неизменяемое представление. - Возвращает:
- неизменяемое представление указанной отсортированной карты.
synchronizedCollection
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
При обходе возвращаемой коллекции с помощью Iterator, Spliterator или Stream пользователь должен вручную синхронизировать доступ к ней:
Collection c = Collections.synchronizedCollection(myCollection);
...
synchronized (c) {
Iterator i = c.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
Несоблюдение этой рекомендации может привести к недетерминированному поведению. Возвращаемая коллекция не передаёт операции hashCode и equals базовой коллекции, а полагается на методы equals и hashCode класса Object. Это необходимо для сохранения контрактов этих операций в том случае, если базовая коллекция является множеством или списком.
Возвращаемая коллекция будет сериализуемой, если указанная коллекция сериализуема.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
c— коллекция, которую требуется «обернуть» в синхронизированную коллекцию. - Возвращает:
- синхронизированное представление указанной коллекции.
synchronizedSet
public static <T> Set<T> synchronizedSet(Set<T> s)
При обходе возвращаемой коллекции с помощью Iterator, Spliterator или Stream пользователь должен вручную синхронизировать доступ к ней:
Set s = Collections.synchronizedSet(new HashSet());
...
synchronized (s) {
Iterator i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
Несоблюдение этой рекомендации может привести к недетерминированному поведению. Возвращаемое множество будет сериализуемым, если указанное множество сериализуемо.
- Параметры типа:
T— класс объектов во множестве- Параметры:
-
s— множество, которое требуется «обернуть» в синхронизированное множество. - Возвращает:
- синхронизированное представление указанного множества.
synchronizedSortedSet
public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
При обходе возвращаемого отсортированного множества или любых его представлений subSet, headSet или tailSet с помощью Iterator, Spliterator или Stream пользователь должен вручную синхронизировать доступ к нему:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
...
synchronized (s) {
Iterator i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
или:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
SortedSet s2 = s.headSet(foo);
...
synchronized (s) { // Note: s, not s2!!!
Iterator i = s2.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
Несоблюдение этой рекомендации может привести к недетерминированному поведению. Возвращаемое отсортированное множество будет сериализуемым, если указанное отсортированное множество сериализуемо.
- Параметры типа:
T— класс объектов во множестве- Параметры:
-
s— отсортированное множество, которое требуется «обернуть» в синхронизированное отсортированное множество. - Возвращает:
- синхронизированное представление указанного отсортированного множества.
synchronizedList
public static <T> List<T> synchronizedList(List<T> list)
При обходе возвращаемого списка с помощью Iterator, Spliterator или Stream пользователь должен вручную синхронизировать доступ к нему:
List list = Collections.synchronizedList(new ArrayList());
...
synchronized (list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
Несоблюдение этой рекомендации может привести к недетерминированному поведению. Возвращаемый список будет сериализуемым, если указанный список сериализуем.
- Параметры типа:
T— класс объектов в списке- Параметры:
-
list— список, который требуется «обернуть» в синхронизированный список. - Возвращает:
- синхронизированное представление указанного списка.
synchronizedMap
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
При обходе любых представлений-коллекций возвращаемой карты с помощью Iterator, Spliterator или Stream пользователь должен вручную синхронизировать доступ к карте:
Map m = Collections.synchronizedMap(new HashMap());
...
Set s = m.keySet(); // Needn't be in synchronized block
...
synchronized (m) { // Synchronizing on m, not s!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
Несоблюдение этой рекомендации может привести к недетерминированному поведению. Возвращаемая карта будет сериализуемой, если указанная карта сериализуема.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— карта, которую требуется «обернуть» в синхронизированную карту. - Возвращает:
- синхронизированное представление указанной карты.
synchronizedSortedMap
public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
При обходе любых представлений-коллекций возвращаемой отсортированной карты или представлений-коллекций любой из её карт-представлений subMap, headMap или tailMap с помощью Iterator, Spliterator или Stream пользователь должен вручную синхронизировать доступ к карте:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
...
Set s = m.keySet(); // Needn't be in synchronized block
...
synchronized (m) { // Synchronizing on m, not s!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
или:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
SortedMap m2 = m.subMap(foo, bar);
...
Set s2 = m2.keySet(); // Needn't be in synchronized block
...
synchronized (m) { // Synchronizing on m, not m2 or s2!
Iterator i = s2.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
Несоблюдение этой рекомендации может привести к недетерминированному поведению. Возвращаемая отсортированная карта будет сериализуемой, если указанная отсортированная карта сериализуема.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— отсортированная карта, которую требуется «обернуть» в синхронизированную отсортированную карту. - Возвращает:
- синхронизированное представление указанной отсортированной карты.
checkedCollection
public static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type)
ClassCastException. Если предположить, что до создания представления с динамической проверкой типов коллекция не содержит элементов неверного типа и что весь последующий доступ к коллекции осуществляется через это представление, то гарантируется, что коллекция не сможет содержать элемент неверного типа. Механизм обобщений языка обеспечивает проверку типов во время компиляции (статическую проверку), однако его можно обойти с помощью непроверяемых приведений типов. Обычно это не проблема, поскольку компилятор выдаёт предупреждения для всех таких непроверяемых операций. Однако бывают случаи, когда одной лишь статической проверки типов недостаточно. Например, предположим, что коллекция передаётся сторонней библиотеке, и крайне важно, чтобы код библиотеки не повредил коллекцию, вставив элемент неверного типа.
Ещё одно применение представлений с динамической проверкой типов — отладка. Предположим, программа завершается с ошибкой ClassCastException, указывая на то, что в параметризованную коллекцию был добавлен элемент неверного типа. К сожалению, исключение может возникнуть в любой момент после вставки ошибочного элемента, поэтому обычно оно практически не помогает определить истинный источник проблемы. Если проблему можно воспроизвести, её источник можно быстро определить, временно изменив программу и обернув коллекцию в представление с динамической проверкой типов. Например, это объявление:
Collection<String> c = new HashSet<>();
можно временно заменить следующим: Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
При повторном запуске программы ошибка возникнет в месте вставки в коллекцию элемента неверного типа, что позволит однозначно определить источник проблемы. После её устранения изменённое объявление можно вернуть к исходному. Возвращаемая коллекция не передаёт операции hashCode и equals базовой коллекции, а полагается на методы equals и hashCode класса Object. Это необходимо для сохранения контрактов этих операций в том случае, если базовая коллекция является множеством или списком.
Возвращаемая коллекция будет сериализуемой, если указанная коллекция сериализуема.
Поскольку null считается значением любого ссылочного типа, возвращаемая коллекция позволяет вставлять элементы null, если это допускает базовая коллекция.
- Параметры типа:
E— класс объектов в коллекции- Параметры:
-
c— коллекция, для которой требуется вернуть представление с динамической проверкой типов -
type— тип элемента, который разрешено хранить вc - Возвращает:
- представление указанной коллекции с динамической проверкой типов
- С версии:
- 1.5
checkedQueue
public static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type)
ClassCastException. Если предположить, что до создания динамически типобезопасного представления очередь не содержит элементов неправильного типа и что после этого весь доступ к очереди осуществляется через это представление, то гарантируется, что очередь не может содержать элемент неправильного типа. Обсуждение использования динамически типобезопасных представлений можно найти в документации к методу checkedCollection.
Возвращаемая очередь будет сериализуемой, если указанная очередь сериализуема.
Поскольку null считается значением любого ссылочного типа, возвращаемая очередь допускает вставку элементов null, если это допускает исходная очередь.
- Параметры типа:
E— класс объектов в очереди- Параметры:
-
queue— очередь, для которой возвращается динамически типобезопасное представление -
type— тип элемента, который может содержатьqueue - Возвращает:
- динамически типобезопасное представление указанной очереди
- Начиная с:
- 1.8
checkedSet
public static <E> Set<E> checkedSet(Set<E> s, Class<E> type)
ClassCastException. Если предположить, что до создания динамически типобезопасного представления множество не содержит элементов неправильного типа и что после этого весь доступ к множеству осуществляется через это представление, то гарантируется, что множество не может содержать элемент неправильного типа. Обсуждение использования динамически типобезопасных представлений можно найти в документации к методу checkedCollection.
Возвращаемое множество будет сериализуемым, если указанное множество сериализуемо.
Поскольку null считается значением любого ссылочного типа, возвращаемое множество допускает вставку элементов null, если это допускает исходное множество.
- Параметры типа:
E— класс объектов в множестве- Параметры:
-
s— множество, для которого возвращается динамически типобезопасное представление -
type— тип элемента, который может содержатьs - Возвращает:
- динамически типобезопасное представление указанного множества
- Начиная с:
- 1.5
checkedSortedSet
public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, Class<E> type)
ClassCastException. Если предположить, что до создания динамически типобезопасного представления отсортированное множество не содержит элементов неправильного типа и что после этого весь доступ к отсортированному множеству осуществляется через это представление, то гарантируется, что отсортированное множество не может содержать элемент неправильного типа. Обсуждение использования динамически типобезопасных представлений можно найти в документации к методу checkedCollection.
Возвращаемое отсортированное множество будет сериализуемым, если указанное отсортированное множество сериализуемо.
Поскольку null считается значением любого ссылочного типа, возвращаемое отсортированное множество допускает вставку элементов null, если это допускает исходное отсортированное множество.
- Параметры типа:
E— класс объектов в множестве- Параметры:
-
s— отсортированное множество, для которого возвращается динамически типобезопасное представление -
type— тип элемента, который может содержатьs - Возвращает:
- динамически типобезопасное представление указанного отсортированного множества
- Начиная с:
- 1.5
checkedList
public static <E> List<E> checkedList(List<E> list, Class<E> type)
ClassCastException. Если предположить, что до создания динамически типобезопасного представления список не содержит элементов неправильного типа и что после этого весь доступ к списку осуществляется через это представление, то гарантируется, что список не может содержать элемент неправильного типа. Обсуждение использования динамически типобезопасных представлений можно найти в документации к методу checkedCollection.
Возвращаемый список будет сериализуемым, если указанный список сериализуем.
Поскольку null считается значением любого ссылочного типа, возвращаемый список допускает вставку элементов null, если это допускает исходный список.
- Параметры типа:
E— класс объектов в списке- Параметры:
-
list— список, для которого возвращается динамически типобезопасное представление -
type— тип элемента, который может содержатьlist - Возвращает:
- динамически типобезопасное представление указанного списка
- Начиная с:
- 1.5
checkedMap
public static <K,V> Map<K,V> checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType)
ClassCastException. Аналогично, любая попытка изменить значение, связанное в данный момент с ключом, немедленно приведет к ClassCastException, независимо от того, предпринимается ли изменение непосредственно через саму карту или через экземпляр Map.Entry, полученный из представления entry set карты. Если предположить, что до создания динамически типобезопасного представления карта не содержит ключей или значений неправильного типа и что после этого весь доступ к карте осуществляется через это представление (или одно из его представлений-коллекций), то гарантируется, что карта не может содержать ключ или значение неправильного типа.
Обсуждение использования динамически типобезопасных представлений можно найти в документации к методу checkedCollection.
Возвращаемая карта будет сериализуемой, если указанная карта сериализуема.
Поскольку null считается значением любого ссылочного типа, возвращаемая карта допускает вставку ключей или значений null, если это допускает исходная карта.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— карта, для которой возвращается динамически типобезопасное представление -
keyType— тип ключа, который может содержатьm -
valueType— тип значения, которое может содержатьm - Возвращает:
- динамически типобезопасное представление указанной карты
- Начиная с:
- 1.5
checkedSortedMap
public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType)
ClassCastException. Аналогично, любая попытка изменить значение, связанное в данный момент с ключом, немедленно приведет к ClassCastException, независимо от того, предпринимается ли изменение непосредственно через саму карту или через экземпляр Map.Entry, полученный из представления entry set карты. Если предположить, что карта не содержит ключей или значений неправильного типа до создания динамически типобезопасного представления и что после этого весь доступ к карте осуществляется через это представление (или одно из его представлений-коллекций), то гарантируется, что карта не может содержать ключ или значение неправильного типа.
Обсуждение использования динамически типобезопасных представлений можно найти в документации к методу checkedCollection.
Возвращаемая карта будет сериализуемой, если указанная карта сериализуема.
Поскольку null считается значением любого ссылочного типа, возвращаемая карта допускает вставку ключей или значений null, если это допускает исходная карта.
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
m— карта, для которой возвращается динамически типобезопасное представление -
keyType— тип ключа, который может содержатьm -
valueType— тип значения, которое может содержатьm - Возвращает:
- динамически типобезопасное представление указанной карты
- Начиная с:
- 1.5
emptyIterator
public static <T> Iterator<T> emptyIterator()
-
hasNextвсегда возвращаетfalse. -
nextвсегда выбрасываетNoSuchElementException. -
removeвсегда выбрасываетIllegalStateException.
Реализациям этого метода разрешается, но не требуется, возвращать один и тот же объект при нескольких вызовах.
- Параметры типа:
T— тип элементов итератора, если бы они были- Возвращает:
- пустой итератор
- Начиная с:
- 1.7
emptyListIterator
public static <T> ListIterator<T> emptyListIterator()
-
hasNextиhasPreviousвсегда возвращаютfalse. -
nextиpreviousвсегда выбрасываютNoSuchElementException. -
removeиsetвсегда выбрасываютIllegalStateException. -
addвсегда выбрасываетUnsupportedOperationException. -
nextIndexвсегда возвращает0. -
previousIndexвсегда возвращает-1.
Реализациям этого метода разрешается, но не требуется, возвращать один и тот же объект при нескольких вызовах.
- Параметры типа:
T— тип элементов итератора, если бы они были- Возвращает:
- пустой итератор списка
- Начиная с:
- 1.7
emptyEnumeration
public static <T> Enumeration<T> emptyEnumeration()
-
hasMoreElementsвсегда возвращаетfalse. -
nextElementвсегда выбрасываетNoSuchElementException.
Реализациям этого метода разрешается, но не требуется, возвращать один и тот же объект при нескольких вызовах.
- Параметры типа:
T— класс объектов в перечислении- Возвращает:
- пустое перечисление
- Начиная с:
- 1.7
emptySet
public static final <T> Set<T> emptySet()
В этом примере показан безопасный с точки зрения типов способ получить пустое множество:
Set<String> s = Collections.emptySet();
- Примечание по реализации:
- Реализациям этого метода не обязательно создавать отдельный объект
Setпри каждом вызове. Вероятно, стоимость использования этого метода будет сопоставима со стоимостью использования одноименного поля. (В отличие от этого метода, поле не обеспечивает безопасность типов.) - Параметры типа:
T— класс объектов в множестве- Возвращает:
- пустое множество
- Начиная с:
- 1.5
- См. также:
emptySortedSet
public static <E> SortedSet<E> emptySortedSet()
В этом примере показан безопасный с точки зрения типов способ получить пустое отсортированное множество:
SortedSet<String> s = Collections.emptySortedSet();
- Примечание по реализации:
- Реализациям этого метода не обязательно создавать отдельный объект
SortedSetпри каждом вызове. - Параметры типа:
E— тип элементов множества, если бы они были- Возвращает:
- пустое отсортированное множество
- Начиная с:
- 1.8
emptyList
public static final <T> List<T> emptyList()
В этом примере показан безопасный с точки зрения типов способ получить пустой список:
List<String> s = Collections.emptyList();
- Примечание по реализации:
- Реализациям этого метода не обязательно создавать отдельный объект
Listпри каждом вызове. Вероятно, стоимость использования этого метода будет сопоставима со стоимостью использования одноименного поля. (В отличие от этого метода, поле не обеспечивает безопасность типов.) - Параметры типа:
T— тип элементов списка, если бы они были- Возвращает:
- пустой неизменяемый список
- Начиная с:
- 1.5
- См. также:
emptyMap
public static final <K,V> Map<K,V> emptyMap()
В этом примере показан безопасный с точки зрения типов способ получить пустую карту:
Map<String, Date> s = Collections.emptyMap();
- Примечание по реализации:
- Реализациям этого метода не обязательно создавать отдельный объект
Mapпри каждом вызове. Вероятно, стоимость использования этого метода будет сопоставима со стоимостью использования одноименного поля. (В отличие от этого метода, поле не обеспечивает безопасность типов.) - Параметры типа:
K— класс ключей картыV— класс значений карты- Возвращает:
- пустую карту
- Начиная с:
- 1.5
- См. также:
emptySortedMap
public static final <K,V> SortedMap<K,V> emptySortedMap()
В этом примере показан безопасный с точки зрения типов способ получить пустую карту:
SortedMap<String, Date> s = Collections.emptySortedMap();
- Примечание по реализации:
- Реализациям этого метода не обязательно создавать отдельный объект
SortedMapпри каждом вызове. - Параметры типа:
K— класс ключей картыV— класс значений карты- Возвращает:
- пустую отсортированную карту
- Начиная с:
- 1.8
singleton
public static <T> Set<T> singleton(T o)
- Параметры типа:
T— класс объектов в множестве- Параметры:
-
o— единственный объект, который будет сохранен в возвращаемом множестве. - Возвращает:
- неизменяемое множество, содержащее только указанный объект.
singletonList
public static <T> List<T> singletonList(T o)
- Параметры типа:
T— класс объектов в списке- Параметры:
-
o— единственный объект, который будет сохранен в возвращаемом списке. - Возвращает:
- неизменяемый список, содержащий только указанный объект.
- Начиная с:
- 1.3
singletonMap
public static <K,V> Map<K,V> singletonMap(K key, V value)
- Параметры типа:
K— класс ключей картыV— класс значений карты- Параметры:
-
key— единственный ключ, который будет сохранен в возвращаемой карте. -
value— значение, с которым возвращаемая карта сопоставляетkey. - Возвращает:
- неизменяемую карту, содержащую только указанное соответствие ключа и значения.
- Начиная с:
- 1.3
nCopies
public static <T> List<T> nCopies(int n, T o)
n копий указанного объекта. Создаваемый объект данных имеет крошечный размер (он содержит единственную ссылку на объект данных). Этот метод удобно использовать вместе с методом List.addAll для увеличения списков. Возвращаемый список сериализуем.- Параметры типа:
T— класс копируемого объекта и объектов в возвращаемом списке.- Параметры:
-
n— количество элементов в возвращаемом списке. -
o— элемент, который будет многократно включен в возвращаемый список. - Возвращает:
- неизменяемый список, состоящий из
nкопий указанного объекта. - Выбрасывает:
-
IllegalArgumentException— еслиn < 0 - См. также:
reverseOrder
public static <T> Comparator<T> reverseOrder()
Comparable. (Естественный порядок задаётся собственным методом compareTo объектов.) Это позволяет легко сортировать (или поддерживать в определённом порядке) коллекции (или массивы) объектов, реализующих интерфейс Comparable, в обратном естественном порядке. Например, предположим, что a — массив строк. Тогда:
Arrays.sort(a, Collections.reverseOrder());
сортирует массив в обратном лексикографическом (алфавитном) порядке.Возвращаемый компаратор сериализуем.
- Примечание к API:
- Этот метод возвращает
Comparator, подходящий для сортировки элементов в обратном порядке. Чтобы получить обратное представление упорядоченной коллекции, используйте методSequencedCollection.reversed. Или, чтобы получить обратное представление упорядоченной карты, используйте методSequencedMap.reversed. - Параметры типа:
T— класс объектов, сравниваемых компаратором- Возвращает:
- Компаратор, задающий порядок, обратный естественному порядку, для коллекции объектов, реализующих интерфейс
Comparable. - См. также:
reverseOrder
public static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
null, этот метод эквивалентен reverseOrder() (иначе говоря, он возвращает компаратор, задающий порядок, обратный естественному порядку, для коллекции объектов, реализующих интерфейс Comparable). Возвращаемый компаратор сериализуем (если указанный компаратор также сериализуем или null).
- Примечание к API:
- Этот метод возвращает
Comparator, подходящий для сортировки элементов в обратном порядке. Чтобы получить обратное представление упорядоченной коллекции, используйте методSequencedCollection.reversed. Или, чтобы получить обратное представление упорядоченной карты, используйте методSequencedMap.reversed. - Параметры типа:
T— класс объектов, сравниваемых компаратором- Параметры:
-
cmp— компаратор, порядок которого должен быть обращён возвращаемым компаратором, илиnull - Возвращает:
- Компаратор, задающий порядок, обратный порядку указанного компаратора.
- Начиная с версии:
- 1.5
enumeration
public static <T> Enumeration<T> enumeration(Collection<T> c)
Итератор, возвращаемый вызовом Enumeration.asIterator(), не поддерживает удаление элементов из указанной коллекции. Это необходимо, чтобы случайно не расширить возможности возвращаемого перечисления.
- Параметры типа:
T— класс объектов в коллекции- Параметры:
-
c— коллекция, для которой возвращается перечисление. - Возвращает:
- перечисление для указанной коллекции.
- См. также:
list
public static <T> ArrayList<T> list(Enumeration<T> e)
- Параметры типа:
T— класс объектов, возвращаемых перечислением- Параметры:
-
e— перечисление, предоставляющее элементы для возвращаемого списка-массива - Возвращает:
- список-массив, содержащий элементы, возвращаемые указанным перечислением.
- Начиная с версии:
- 1.4
- См. также:
frequency
public static int frequency(Collection<?> c, Object o)
e в коллекции, для которых выполняется Objects.equals(o, e).- Параметры:
-
c— коллекция, в которой определяется частота появленияo -
o— объект, частоту появления которого нужно определить - Возвращает:
- количество элементов в
c, равныхo - Вызывает исключение:
-
NullPointerException— еслиcравно null - Начиная с версии:
- 1.5
disjoint
public static boolean disjoint(Collection<?> c1, Collection<?> c2)
true, если две указанные коллекции не имеют общих элементов. Следует соблюдать осторожность при использовании этого метода с коллекциями, которые не соответствуют общему контракту Collection. Реализации могут выбрать перебор любой из коллекций и проверку наличия элементов в другой коллекции (или выполнить эквивалентное вычисление). Если в одной из коллекций используется нестандартная проверка равенства (как в случае с SortedSet, порядок элементов которого несовместим с equals, или с набором ключей IdentityHashMap), обе коллекции должны использовать одну и ту же нестандартную проверку равенства, иначе результат этого метода не определён.
Также следует соблюдать осторожность при работе с коллекциями, накладывающими ограничения на содержащиеся в них элементы. Реализации коллекций могут вызывать исключения при выполнении любых операций с элементами, которые они считают недопустимыми. Для полной безопасности указанные коллекции должны содержать только элементы, допустимые для обеих коллекций.
Допускается передавать одну и ту же коллекцию в оба параметра. В этом случае метод вернёт true тогда и только тогда, когда коллекция пуста.
- Параметры:
-
c1— коллекция -
c2— коллекция - Возвращает:
-
true, если две указанные коллекции не имеют общих элементов. - Вызывает исключение:
-
NullPointerException— если одна из коллекций равнаnull. -
NullPointerException— если одна коллекция содержит элементnull, аnullне является допустимым элементом для другой коллекции. (необязательно) -
ClassCastException— если одна коллекция содержит элемент типа, недопустимого для другой коллекции. (необязательно) - Начиная с версии:
- 1.5
addAll
@SafeVarargs public static <T> boolean addAll(Collection<? super T> c, T... elements)
c.addAll(Collections.unmodifiableList(Arrays.asList(elements))). Указание элементов по отдельности позволяет удобно добавлять несколько элементов в существующую коллекцию:
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
- Параметры типа:
T— класс добавляемых элементов и коллекции- Параметры:
-
c— коллекция, в которую должны быть добавленыelements -
elements— элементы для добавления вc - Возвращает:
-
true, если коллекция изменилась в результате вызова - Вызывает исключение:
-
UnsupportedOperationException— еслиcне поддерживает операциюadd -
NullPointerException— еслиelementsсодержит одно или несколько значений null, аcне допускает null-элементы, либо еслиcилиelementsравныnull -
IllegalArgumentException— если какое-либо свойство значения вelementsпрепятствует его добавлению вc - Начиная с версии:
- 1.5
- См. также:
newSetFromMap
public static <E> Set<E> newSetFromMap(Map<E,Boolean> map)
Set, соответствующую любой реализации Map. Нет необходимости использовать этот метод для реализации Map, уже имеющей соответствующую реализацию Set (например, HashMap или TreeMap). Каждый вызов метода для набора, возвращённого этим методом, приводит ровно к одному вызову метода для исходной карты или её представления keySet, за одним исключением. Метод addAll реализован как последовательность вызовов put для исходной карты.
Указанная карта должна быть пустой на момент вызова этого метода, и после его возврата к ней не следует обращаться напрямую. Эти условия выполняются, если карта создаётся пустой, напрямую передаётся этому методу и ссылка на карту не сохраняется, как показано в следующем фрагменте кода:
Set<Object> weakHashSet = Collections.newSetFromMap(
new WeakHashMap<Object, Boolean>());
- Параметры типа:
E— класс ключей карты и объектов в возвращаемом наборе- Параметры:
-
map— исходная карта - Возвращает:
- набор, основанный на карте
- Вызывает исключение:
-
IllegalArgumentException— еслиmapне пуста - Начиная с версии:
- 1.6
newSequencedSetFromMap
public static <E> SequencedSet<E> newSequencedSetFromMap(SequencedMap<E,Boolean> map)
SequencedSet, соответствующую любой реализации SequencedMap. Каждый вызов метода для набора, возвращённого этим методом, приводит ровно к одному вызову метода для исходной карты или её представления keySet, за одним исключением. Метод addAll реализован как последовательность вызовов put для исходной карты.
Указанная карта должна быть пустой на момент вызова этого метода, и после его возврата к ней не следует обращаться напрямую. Эти условия выполняются, если карта создаётся пустой, напрямую передаётся этому методу и ссылка на карту не сохраняется.
- Примечание к API:
- Следующий пример кода создаёт
SequencedSetизLinkedHashMap. Это отличается отLinkedHashSetтем, чтоremoveEldestEntryкарты переопределяется для реализации политики вытеснения, что невозможно сLinkedHashSet.SequencedSet<String> set = Collections.newSequencedSetFromMap( new LinkedHashMap<String, Boolean>() { protected boolean removeEldestEntry(Map.Entry<String, Boolean> e) { return this.size() > 5; } }); - Параметры типа:
E— класс ключей карты и объектов в возвращаемом наборе- Параметры:
-
map— исходная карта - Возвращает:
- набор, основанный на карте
- Вызывает исключение:
-
IllegalArgumentException— еслиmapне пуста - Начиная с версии:
- 21
asLifoQueue
public static <T> Queue<T> asLifoQueue(Deque<T> deque)
Deque в виде очереди Queue с принципом «последним пришёл — первым ушёл» (LIFO). Метод add отображается на push, remove отображается на pop и так далее. Это представление может быть полезно, если требуется использовать метод, которому нужна Queue, но необходим порядок LIFO. Каждый вызов метода для очереди, возвращённой этим методом, приводит ровно к одному вызову метода для исходной двусторонней очереди, за одним исключением. Метод addAll реализован как последовательность вызовов addFirst для исходной двусторонней очереди.
- Примечание к API:
- Этот метод предоставляет представление, инвертирующее смысл некоторых операций, но не меняющее порядок обхода. Чтобы получить представление с обратным порядком, используйте метод
Deque.reversed. - Параметры типа:
T— класс объектов в двусторонней очереди- Параметры:
-
deque— двусторонняя очередь - Возвращает:
- очередь
- Начиная с версии:
- 1.6
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Collections.html