Java - Os algoritmos de coleção

A estrutura de coleções define vários algoritmos que podem ser aplicados a coleções e mapas.

Esses algoritmos são definidos como métodos estáticos dentro da classe Collections. Vários dos métodos podem lançar umClassCastException, que ocorre quando é feita uma tentativa de comparar tipos incompatíveis, ou um UnsupportedOperationException, que ocorre quando é feita uma tentativa de modificar uma coleção não modificável.

Os métodos definidos no algoritmo da estrutura de coleta são resumidos na tabela a seguir -

Sr. Não. Método e Descrição
1

static int binarySearch(List list, Object value, Comparator c)

Pesquisa por valor na lista ordenada de acordo com c. Retorna a posição do valor na lista ou -1 se o valor não for encontrado.

2

static int binarySearch(List list, Object value)

Pesquisa um valor na lista. A lista deve ser classificada. Retorna a posição do valor na lista ou -1 se o valor não for encontrado.

3

static void copy(List list1, List list2)

Copia os elementos de lista2 para lista1.

4

static Enumeration enumeration(Collection c)

Retorna uma enumeração sobre c.

5

static void fill(List list, Object obj)

Atribui obj a cada elemento da lista.

6

static int indexOfSubList(List list, List subList)

Pesquisa na lista a primeira ocorrência de subList. Retorna o índice da primeira correspondência ou .1 se nenhuma correspondência for encontrada.

7

static int lastIndexOfSubList(List list, List subList)

Pesquisa na lista a última ocorrência de subList. Retorna o índice da última correspondência ou .1 se nenhuma correspondência for encontrada.

8

static ArrayList list(Enumeration enum)

Retorna um ArrayList que contém os elementos de enum.

9

static Object max(Collection c, Comparator comp)

Retorna o elemento máximo em c conforme determinado por comp.

10

static Object max(Collection c)

Retorna o elemento máximo em cconforme determinado pela ordenação natural. A coleção não precisa ser classificada.

11

static Object min(Collection c, Comparator comp)

Retorna o elemento mínimo em cconforme determinado por comp. A coleção não precisa ser classificada.

12

static Object min(Collection c)

Retorna o elemento mínimo em c conforme determinado pela ordenação natural.

13

static List nCopies(int num, Object obj)

Retorna núm cópias de obj contido em uma lista imutável. num deve ser maior ou igual a zero.

14

static boolean replaceAll(List list, Object old, Object new)

Substitui todas as ocorrências antigas por novas na lista. Retorna verdadeiro se pelo menos uma substituição ocorreu. Retorna falso, caso contrário.

15

static void reverse(List list)

Inverte a sequência na lista.

16

static Comparator reverseOrder( )

Retorna um comparador reverso.

17

static void rotate(List list, int n)

Gira a lista por nlugares à direita. Para girar para a esquerda, use um valor negativo paran.

18

static void shuffle(List list, Random r)

Embaralha (ou seja, randomiza) os elementos da lista usando r como fonte de números aleatórios.

19

static void shuffle(List list)

Embaralha (ou seja, randomiza) os elementos da lista.

20

static Set singleton(Object obj)

Retorna obj como um conjunto imutável. Esta é uma maneira fácil de converter um único objeto em um conjunto.

21

static List singletonList(Object obj)

Retorna obj como uma lista imutável. Esta é uma maneira fácil de converter um único objeto em uma lista.

22

static Map singletonMap(Object k, Object v)

Retorna o par chave / valor k / v como um mapa imutável. Esta é uma maneira fácil de converter um único par de chave / valor em um mapa.

23

static void sort(List list, Comparator comp)

Classifica os elementos da lista conforme determinado por comp.

24

static void sort(List list)

Classifica os elementos da lista conforme determinado por sua ordem natural.

25

static void swap(List list, int idx1, int idx2)

Troca os elementos da lista pelos índices especificados por idx1 e idx2.

26

static Collection synchronizedCollection(Collection c)

Retorna uma coleção thread-safe apoiada por c.

27

static List synchronizedList(List list)

Retorna uma lista thread-safe apoiada por list.

28

static Map synchronizedMap(Map m)

Retorna um mapa thread-safe apoiado por m.

29

static Set synchronizedSet(Set s)

Retorna um conjunto thread-safe apoiado por s.

30

static SortedMap synchronizedSortedMap(SortedMap sm)

Retorna um conjunto classificado thread-safe apoiado por sm.

31

static SortedSet synchronizedSortedSet(SortedSet ss)

Retorna um conjunto thread-safe apoiado por ss.

32

static Collection unmodifiableCollection(Collection c)

Retorna uma coleção não modificável apoiada por c.

33

static List unmodifiableList(List list)

Retorna uma lista não modificável apoiada pela lista.

34

static Map unmodifiableMap(Map m)

Retorna um mapa não modificável apoiado por m.

35

static Set unmodifiableSet(Set s)

Retorna um conjunto inalterável apoiado por s.

36

static SortedMap unmodifiableSortedMap(SortedMap sm)

Retorna um mapa classificado não modificável apoiado por sm.

37

static SortedSet unmodifiableSortedSet(SortedSet ss)

Retorna um conjunto classificado não modificável apoiado por ss.

Exemplo

A seguir está um exemplo, que demonstra vários algoritmos.

import java.util.*;
public class AlgorithmsDemo {

   public static void main(String args[]) {
      
      // Create and initialize linked list
      LinkedList ll = new LinkedList();
      ll.add(new Integer(-8));
      ll.add(new Integer(20));
      ll.add(new Integer(-20));
      ll.add(new Integer(8));
      
      // Create a reverse order comparator
      Comparator r = Collections.reverseOrder();
      
      // Sort list by using the comparator
      Collections.sort(ll, r);
      
      // Get iterator
      Iterator li = ll.iterator();
      System.out.print("List sorted in reverse: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }
      System.out.println();
      Collections.shuffle(ll);
      
      // display randomized list
      li = ll.iterator();
      System.out.print("List shuffled: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }

      System.out.println();
      System.out.println("Minimum: " + Collections.min(ll));
      System.out.println("Maximum: " + Collections.max(ll));
   }
}

Isso produzirá o seguinte resultado -

Resultado

List sorted in reverse: 20 8 -8 -20
List shuffled: 20 -20 8 -8
Minimum: -20
Maximum: 20