Algoritmos Java

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 elementos
  • fill() - substitua cada elemento em uma coleção com o valor especificado
  • copy() - cria uma cópia dos elementos da fonte especificada para o destino
  • swap() - troca a posição de dois elementos em uma coleção
  • addAll() - 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ção
  • disjoint() - 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 

Artigos interessantes...