Algoritmos Java

En este tutorial, aprenderemos sobre los diferentes algoritmos proporcionados por el marco de colecciones de Java con la ayuda de ejemplos.

El marco de recopilación de Java proporciona varios algoritmos que se pueden utilizar para manipular elementos almacenados en estructuras de datos.

Los algoritmos en Java son métodos estáticos que se pueden usar para realizar varias operaciones en colecciones.

Dado que los algoritmos se pueden utilizar en varias colecciones, también se conocen como algoritmos genéricos .

Veamos la implementación de diferentes métodos disponibles en el marco de colecciones.

1. Ordenar usando sort ()

El sort()método proporcionado por el marco de colecciones se utiliza para ordenar elementos. Por ejemplo,

 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); ) ) 

Salida

 ArrayList sin clasificar: (4, 2, 3) ArrayList ordenado: (2, 3, 4) 

Aquí la clasificación ocurre en orden natural (orden ascendente). Sin embargo, podemos personalizar el orden de clasificación del sort()método utilizando la interfaz Comparator.

Para obtener más información, visite Clasificación de Java.

2. Mezcla mediante reproducción aleatoria ()

El shuffle()método del marco de colecciones de Java se utiliza para destruir cualquier tipo de orden presente en la estructura de datos. Hace todo lo contrario a la clasificación. Por ejemplo,

 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); ) ) 

Salida

 ArrayList ordenado: (1, 2, 3) ArrayList usando shuffle: (2, 1, 3) 

Cuando ejecutamos el programa, el shuffle()método devolverá una salida aleatoria.

El algoritmo de barajado se utiliza principalmente en juegos en los que queremos una salida aleatoria.

3. Manipulación de datos de rutina

En Java, el marco de colecciones proporciona diferentes métodos que se pueden utilizar para manipular datos.

  • reverse() - invierte el orden de los elementos
  • fill() - reemplazar todos los elementos de una colección con el valor especificado
  • copy() - crea una copia de elementos desde el origen especificado al destino
  • swap() - intercambia la posición de dos elementos en una colección
  • addAll() - agrega todos los elementos de una colección a otra colección

Por ejemplo,

 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); ) ) 

Salida

 ArrayList1: (1, 2) ArrayList1 invertido: (2, 1) ArrayList1 Usando swap (): (1, 2) ArrayList2 usando addALl (): (1, 2) ArrayList1 usando fill (): (0, 0) ArrayList2 usando copiar (): (0, 0) 

Nota : mientras se realiza el copy()método, ambas listas deben ser del mismo tamaño.

4. Búsqueda mediante binarySearch ()

El binarySearch()método del marco de colecciones de Java busca el elemento especificado. Devuelve la posición del elemento en las colecciones especificadas. Por ejemplo,

 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); ) ) 

Salida

 La posición de 3 es 2. 

Nota : La colección debe ordenarse antes de realizar el binarySearch()método.

Para saber más, visite Java Binary Search.

5. Composición

  • frequency() - devuelve el recuento del número de veces que un elemento está presente en la colección
  • disjoint() - comprueba si dos colecciones contienen algún elemento común

Por ejemplo,

 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); ) ) 

Salida

 ArrayList1: (1, 2, 3, 2) Recuento de 2: 2 ArrayList2: (5, 6) Dos listas están separadas: verdadero 

6. Encontrar valores extremos

Los métodos min()y max()del marco de colecciones de Java se utilizan para encontrar los elementos mínimo y máximo, respectivamente. Por ejemplo,

 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); ) ) 

Salida

 Elemento mínimo: 1 Elemento máximo: 3 

Articulos interesantes...