English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo de Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Queue (cola)

Colección Map de Java

Colección Set de Java

Java Entrada/Salida (I/O)

Lector de Java/Writer

Otras temas de Java

Java Algorithms(算法)

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

El marco de colecciones de Java proporciona una variedad de algoritmos que se pueden utilizar para manejar 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 son aplicables a varios tipos de colecciones, también se denominanalgoritmos genéricos.

Vamos a ver las implementaciones de diferentes métodos disponibles en el marco de colecciones.

1.usar sort() para ordenar

Los métodos del marco de colecciones sort() se utilizan para ordenar elementos. Por ejemplo,

import java.util.ArrayList;
import java.util.Collections;
class Main {
    public static void main(String[] args) {
        //crear una lista de arrays
        ArrayList<Integer> numbers = new ArrayList<>();
        //agregar elementos
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("ArrayList no ordenado: " + numbers);
        // usar el método sort()
        Collections.sort(numbers);
        System.out.println("ArrayList ordenado: " + numbers);
    }
}

输出结果

ArrayList no ordenado: [4, 2, 3]
ArrayList ordenado: [2, 3, 4]

Aquí, el ordenamiento se realiza en orden natural (ascendente). Pero podemos usar el interfaz Comparator para personalizar el orden del método sort().

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

2.usar shuffle para mezclar

El método shuffle() del marco de Collections de Java se utiliza para desordenar cualquier orden que aparezca en la estructura de datos. Su función es exactamente opuesta a la de ordenar. Por ejemplo

import java.util.ArrayList;
import java.util.Collections;
class Main {
    public static void main(String[] args) {
        //crear una lista de arrays
        ArrayList<Integer> numbers = new ArrayList<>();
        //agregar elementos
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("ArrayList ordenado: " + numbers);
        //usar el método shuffle()
        Collections.shuffle(numbers);
        System.out.println("usar shuffle del ArrayList: " + numbers);
    }
}

输出结果

ArrayList ordenado: [1, 2, 3]
usar ArrayList con shuffle: [2, 1, 3]

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

El algoritmo de mezcla se utiliza principalmente en juegos que necesitan salida aleatoria.

3.procesamiento de datos común

En Java, el marco de colecciones proporciona diferentes métodos para manejar datos.

  • reverse() - invierte el orden de los elementos

  • fill() - reemplazar cada elemento de la colección con un valor especificado

  • copy() - crear una copia de elementos desde una fuente específica hasta un destino

  • swap() - intercambiar la posición de dos elementos en la colección

  • addAll() - agregar todos los elementos de la colección a otra colección

Por ejemplo,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //创建一个ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        System.out.println("ArrayList",1: \ + numbers);
        // usar reverse()
        Collections.reverse(numbers);
        System.out.println("invierte ArrayList1: \ + numbers);
        // usar swap()
        Collections.swap(numbers, 0, 1);
        System.out.println("ArrayList",1 usar swap(): " + numbers);
        
        // usar addAll
        newNumbers.addAll(numbers);
        System.out.println("ArrayList",2 Usar addAll(): \ + newNumbers);
        // Usar fill()
        Collections.fill(numbers, 0);
        System.out.println("ArrayList",1 Usar fill(): \ + numbers);
        // Usar copy()
        Collections.copy(newNumbers, numbers);
        System.out.println("ArrayList",2 Usar copy(): \ + newNumbers);
    }
}

输出结果

ArrayList1: [1, 2]
Invertir ArrayList1: [2, 1]
ArrayList1 Usar swap(): [1, 2]
ArrayList2 Usar addAll(): [1, 2]
ArrayList1 Usar fill(): [0, 0]
ArrayList2 Usar copy(): [0, 0]

NotaAl ejecutar el método copy(), el tamaño de las dos listas debe ser el mismo.

4.Usar binarySearch() para buscar

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

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //创建一个ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        // Usar binarySearch()
        int pos = Collections.binarySearch(numbers, 3);
        System.out.println("3La posición es \ + pos);
    }
}

输出结果

3La posición es 2

NotaAntes de ejecutar el método binarySearch(), debe ordenar la colección.

Para obtener más información, visiteBúsqueda binaria de Java.

5.Combinación

  • frequency() - Devuelve el recuento de veces que el elemento existe en la colección

  • disjoint() - Verificar si dos conjuntos contienen algunos elementos comunes

Por ejemplo,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //创建一个ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList",1: \ + numbers);
         2);
        System.out.println("Cuenta de", 2: \ + count);
        
        5);
        6);
        System.out.println("ArrayList",2: \ + newNumbers);
        boolean value = Collections.disjoint(numbers, newNumbers);
        System.out.println("¿Las dos listas son incompatibles? ", + value);
    }
}

输出结果

ArrayList1: [1, 2, 3, 2]
Cuenta de 2: 2
ArrayList2: [5, 6]
¿Las dos listas son incompatibles? true

6Búsqueda del elemento más grande y más pequeño

El marco de colecciones de Java, los métodos min() y max() se utilizan respectivamente para encontrar el elemento más pequeño y el más grande. Por ejemplo,

import java.util.Collections;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        //创建一个ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        // 使用 min()
        int min = Collections.min(numbers);
        System.out.println("最小元素: " ); + min);
        // 使用 max()
        int max = Collections.max(numbers);
        System.out.println("最大元素: " ); + max);
    }
}

输出结果

最小元素: 1
最大元素: 3