Neste tutorial, aprenderemos sobre diferentes algoritmos fornecidos pela estrutura de coleções Java com a ajuda de exemplos.
A estrutura de coleções Java fornece vários algoritmos que podem ser usados para manipular elementos armazenados em estruturas de dados.
Algoritmos em Java são métodos estáticos que podem ser usados para realizar várias operações em coleções.
Como os algoritmos podem ser usados em várias coleções, eles também são conhecidos como algoritmos genéricos .
Vamos ver a implementação de diferentes métodos disponíveis na estrutura de coleções.
1. Classificação usando classificação ()
O sort()
método fornecido pela estrutura de coleções é usado para classificar elementos. Por exemplo,
import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList numbers = new ArrayList(); // Add elements numbers.add(4); numbers.add(2); numbers.add(3); System.out.println("Unsorted ArrayList: " + numbers); // Using the sort() method Collections.sort(numbers); System.out.println("Sorted ArrayList: " + numbers); ) )
Resultado
ArrayList não classificado: (4, 2, 3) Sorted ArrayList: (2, 3, 4)
Aqui, a classificação ocorre em ordem natural (ordem crescente). No entanto, podemos personalizar a ordem de classificação do sort()
método usando a interface do Comparador.
Para saber mais, visite Java Sorting.
2. Ordem aleatória usando shuffle ()
O shuffle()
método da estrutura de coleções Java é usado para destruir qualquer tipo de ordem presente na estrutura de dados. Ele faz exatamente o oposto da classificação. Por exemplo,
import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList numbers = new ArrayList(); // Add elements numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Sorted ArrayList: " + numbers); // Using the shuffle() method Collections.shuffle(numbers); System.out.println("ArrayList using shuffle: " + numbers); ) )
Resultado
ArrayList classificada: (1, 2, 3) ArrayList usando embaralhamento: (2, 1, 3)
Quando executamos o programa, o shuffle()
método retornará uma saída aleatória.
O algoritmo de embaralhamento é usado principalmente em jogos em que queremos uma saída aleatória.
3. Manipulação de dados de rotina
Em Java, a estrutura de coleções fornece diferentes métodos que podem ser usados para manipular dados.
reverse()
- inverte a ordem dos elementosfill()
- substitua cada elemento em uma coleção com o valor especificadocopy()
- cria uma cópia dos elementos da fonte especificada para o destinoswap()
- troca a posição de dois elementos em uma coleçãoaddAll()
- adiciona todos os elementos de uma coleção a outra coleção
Por exemplo,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); System.out.println("ArrayList1: " + numbers); // Using reverse() Collections.reverse(numbers); System.out.println("Reversed ArrayList1: " + numbers); // Using swap() Collections.swap(numbers, 0, 1); System.out.println("ArrayList1 using swap(): " + numbers); ArrayList newNumbers = new ArrayList(); // Using addAll newNumbers.addAll(numbers); System.out.println("ArrayList2 using addAll(): " + newNumbers); // Using fill() Collections.fill(numbers, 0); System.out.println("ArrayList1 using fill(): " + numbers); // Using copy() Collections.copy(newNumbers, numbers); System.out.println("ArrayList2 using copy(): " + newNumbers); ) )
Resultado
ArrayList1: (1, 2) Reversed ArrayList1: (2, 1) ArrayList1 Usando swap (): (1, 2) ArrayList2 usando addALl (): (1, 2) ArrayList1 usando fill (): (0, 0) ArrayList2 usando cópia (): (0, 0)
Nota : Ao executar o copy()
método, as duas listas devem ter o mesmo tamanho.
4. Pesquisando usando binarySearch ()
O binarySearch()
método da estrutura de coleções Java procura o elemento especificado. Ele retorna a posição do elemento nas coleções especificadas. Por exemplo,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); // Using binarySearch() int pos = Collections.binarySearch(numbers, 3); System.out.println("The position of 3 is " + pos); ) )
Resultado
A posição de 3 é 2.
Nota : A coleção deve ser classificada antes de executar o binarySearch()
método.
Para saber mais, visite Java Binary Search.
5. Composição
frequency()
- retorna a contagem do número de vezes que um elemento está presente na coleçãodisjoint()
- verifica se duas coleções contêm algum elemento comum
Por exemplo,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(2); System.out.println("ArrayList1: " + numbers); int count = Collections.frequency(numbers, 2); System.out.println("Count of 2: " + count); ArrayList newNumbers = new ArrayList(); newNumbers.add(5); newNumbers.add(6); System.out.println("ArrayList2: " + newNumbers); boolean value = Collections.disjoint(numbers, newNumbers); System.out.println("Two lists are disjoint: " + value); ) )
Resultado
ArrayList1: (1, 2, 3, 2) Contagem de 2: 2 ArrayList2: (5, 6) Duas listas são disjuntas: verdadeiro
6. Encontrando Valores Extremos
Os métodos min()
e max()
da estrutura de coleções Java são usados para encontrar os elementos mínimo e máximo, respectivamente. Por exemplo,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); // Using min() int min = Collections.min(numbers); System.out.println("Minimum Element: " + min); // Using max() int max = Collections.max(numbers); System.out.println("Maximum Element: " + max); ) )
Resultado
Elemento mínimo: 1 Elemento máximo: 3