Структура коллекций определяет несколько алгоритмов, которые могут применяться к коллекциям и Map.

Эти алгоритмы определяются как статические методы в классе Collections. Некоторые из методов могут генерировать ClassCastException, которое возникает при попытке сравнить несовместимые типы или UnsupportedOperationException, которое возникает, когда предпринимается попытка изменить немодифицируемую коллекцию.

Методы

Методы, определенные в алгоритме структуры коллекции, суммированы в следующей таблице:

Метод и описание
1static int binarySearch(List list, Object value, Comparator c)
Ищет значение в списке, упорядоченном согласно c. Возвращает позицию значения в списке или -1, если значение не найдено.
2static int binarySearch(List list, Object value)
Ищет значение в списке. Список должен быть отсортирован. Возвращает позицию значения в списке или -1, если значение не найдено.
3static void copy(List list1, List list2)
Копирует элементы из list2 в list1.
4static Enumeration enumeration(Collection c)
Возвращает перечисление по c.
5static void fill(List list, Object obj)
Назначает obj каждому элементу списка.
6static int indexOfSubList(List list, List subList)
Ищет список для первого появления subList. Возвращает индекс первого совпадения или .1, если совпадение не найдено.
7static int lastIndexOfSubList(List list, List subList)
Ищет список для последнего появления subList. Возвращает индекс первого совпадения или .1, если совпадение не найдено.
8static ArrayList list(Enumeration enum)
Возвращает ArrayList, содержащий элементы enum.
9static Object max(Collection c, Comparator comp)
Возвращает максимальный элемент в c, определенный comp.
10static Object max(Collection c)
Возвращает максимальный элемент в c, определенный естественным упорядочением. Сбор не нужно сортировать.
11static Object min(Collection c, Comparator comp)
Возвращает минимальный элемент в c, определенный comp. Сбор не нужно сортировать.
12static Object min(Collection c)
Возвращает минимальный элемент в c, определенный естественным упорядочением.
13static List nCopies(int num, Object obj)
Возвращает num копий obj, содержащихся в неизменяемом списке. num должно быть больше или равно нулю.
14static boolean replaceAll(List list, Object old, Object new)
Заменяет все вхождения старых новыми в списке. Возвращает true, если произошла хотя бы одна замена. В противном случае возвращает false.
15static void reverse(List list)
Делает порядок в списке задом наперёд.
16static Comparator reverseOrder( )
Возвращает обратный компаратор.
17static void rotate(List list, int n)
Поворачивает список по n местам вправо. Для поворота влево используйте отрицательное значение для n.
18static void shuffle(List list, Random r)
Перемешивает (т.е. рандомизирует) элементы в списке, используя r как источник случайных чисел.
19static void shuffle(List list)
Перемешивает (т.е. рандомизирует) элементы в списке.
20static Set singleton(Object obj)
Возвращает obj как неизменяемое множество. Это простой способ преобразования одного объекта в набор.
21static List singletonList(Object obj)
Возвращает obj как непреложный список. Это простой способ преобразования одного объекта в список.
22static Map singletonMap(Object k, Object v)
Возвращает пару ключ/значение k/v как неизменяемую карту. Это простой способ преобразовать одну пару ключ/значение в карту.
23static void sort(List list, Comparator comp)
Сортирует элементы списка, как определено comp.
24static void sort(List list)
Сортирует элементы списка, определяемые их естественным упорядочением.
25static void swap(List list, int idx1, int idx2)
Обменивает элементы в списке по индексам, указанными idx1 и idx2.
26static Collection synchronizedCollection(Collection c)
Возвращает потокобезопасную коллекцию, поддерживаемую c.
27static List synchronizedList(List list)
Возвращает список потоков, поддерживаемый списком.
28static Map synchronizedMap(Map m)
Возвращает потокобезопасный Map, поддерживаемую m.
29static Set synchronizedSet(Set s)
Возвращает потокобезопасный набор, поддерживаемый s.
30static SortedMap synchronizedSortedMap(SortedMap sm)
Возвращает потокобезопасный отсортированный Map, поддерживаемый sm.
31static SortedSet synchronizedSortedSet(SortedSet ss)
Возвращает потокобезопасный отсортированный набор, поддерживаемый ss.
32static Collection unmodifiableCollection(Collection c)
Возвращает немодифицируемую коллекцию, поддерживаемую c.
33static List unmodifiableList(List list)
Возвращает немодифицируемый список, поддерживаемый list.
34static Map unmodifiableMap(Map m)
Возвращает немодифицируемый Map, поддерживаемую m.
35static Set unmodifiableSet(Set s)
Возвращает немодифицируемый набор, поддерживаемый s.
36static SortedMap unmodifiableSortedMap(SortedMap sm)
Возвращает немодифицируемый отсортированный Map, поддерживаемый sm.
37static SortedSet unmodifiableSortedSet(SortedSet ss)
Возвращает немодифицируемый отсортированный набор, поддерживаемый ss.

Пример

Ниже приведен пример, демонстрирующий различные алгоритмы в Java:

import java.util.*;
public class AlgorithmsDemo {

   public static void main(String args[]) {
      
      // Создаём и инициализируем связанный список
      LinkedList ll = new LinkedList();
      ll.add(new Integer(-8));
      ll.add(new Integer(20));
      ll.add(new Integer(-20));
      ll.add(new Integer(8));
      
      // Создаём компаратор обратного порядка
      Comparator r = Collections.reverseOrder();
      
      // Сортировка списка с помощью компаратора
      Collections.sort(ll, r);
      
      // Получаем итератор
      Iterator li = ll.iterator();
      System.out.print("Список, отсортированный задом наперёд: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }
      System.out.println();
      Collections.shuffle(ll);
      
      // Отображаем случайный список
      li = ll.iterator();
      System.out.print("Список перемешанный: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }

      System.out.println();
      System.out.println("Минимум: " + Collections.min(ll));
      System.out.println("Максимум: " + Collections.max(ll));
   }
}

Получим следующий результат:

Список, отсортированный задом наперёд: 20 8 -8 -20
Список перемешанный: 20 -20 8 -8
Минимум: -20
Максимум: 20

Оглавление