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