English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать различные алгоритмы, предоставляемые фреймворком Java Collections, с помощью примеров.
Фреймворк Java Collections предоставляет различные алгоритмы для обработки элементов, хранящихся в данных структурах.
Алгоритмы в Java являются статическими методами и могут использоваться для выполнения различных операций с集合ами.
Поскольку алгоритмы могут использоваться с различными集合ами, их также называютУниверсальные алгоритмы.
Давайте посмотрим на различные методы, доступные в фреймворке коллекций.
Методы sort() из集合 фреймворка используются для сортировки элементов. Например:
import java.util.ArrayList; import java.util.Collections; class Main {}} public static void main(String[] args) { //Создание списка ArrayList<Integer> numbers = new ArrayList<>(); //Добавление элементов numbers.add(4); numbers.add(2); numbers.add(3); System.out.println("Неотсортированный ArrayList: " + numbers); //Использование метода sort() Collections.sort(numbers); System.out.println("Отсортированный ArrayList: " + numbers); } }
Результат вывода
Неотсортированный ArrayList: [4, 2, 3] Отсортированный ArrayList: [2, 3, 4]
Здесь сортировка выполняется в естественном порядке (по возрастанию). Но мы можем использовать интерфейс Comparator для настройки порядка сортировки метода sort().
Для получения дополнительной информации посетитеJava Sorting.
Метод shuffle() из фреймворка Java Collections используется для перемешивания последовательности данных в структуре. Его действие противоположно сортировке. Например
import java.util.ArrayList; import java.util.Collections; class Main {}} public static void main(String[] args) { //Создание списка ArrayList<Integer> numbers = new ArrayList<>(); //Добавление элементов numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Отсортированный ArrayList: " + numbers); //Использование метода shuffle() Collections.shuffle(numbers); System.out.println("Использование shuffle ArrayList: " + numbers); } }
Результат вывода
Отсортированный ArrayList: [1, 2, 3] Использование shuffle ArrayList: [2, 1, 3]
Когда мы запускаем программу, метод shuffle() возвращает случайный вывод.
Шуфл алгоритм主要用于 играх, требующих случайного вывода.
В Java, коллекция фреймворк предоставляет различные методы для обработки данных.
reverse() - Обратная последовательность элементов
fill() - Заменяет каждый элемент в наборе заданным значением
copy() - Создает копию элементов из источника в целевую точку
swap() - Обменивает местами два элемента в наборе
addAll() - Добавляет все элементы набора в другой набор
Например:
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("ArrayList1: " + numbers); // Использование reverse() Collections.reverse(numbers); System.out.println("逆变 ArrayList1: " + numbers); // Использование swap() Collections.swap(numbers, 0, 1); System.out.println("ArrayList1 использует swap(): " + numbers); ArrayList<Integer> newNumbers = new ArrayList<>(); // Использование addAll newNumbers.addAll(numbers); System.out.println("ArrayList2 использует addALl(): " + newNumbers); // Использование fill() Collections.fill(numbers, 0); System.out.println("ArrayList1 использует fill(): " + numbers); // Использование copy() Collections.copy(newNumbers, numbers); System.out.println("ArrayList2 использует copy(): " + newNumbers); } }
Результат вывода
ArrayList1: [1, 2] 逆变 ArrayList1: [2, 1] ArrayList1 использует swap(): [1, 2] ArrayList2 использует addALl(): [1, 2] ArrayList1 использует fill(): [0, 0] ArrayList2 использует copy(): [0, 0]
Внимание: При выполнении метода copy() размеры двух списков должны быть одинаковыми.
Метод binarySearch() в рамке Java Collection Framework ищет указанный элемент. Он возвращает положение элемента в указанном наборе. Например:
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); // Использование binarySearch() int pos = Collections.binarySearch(numbers, 3); System.out.println("Позиция 3 является " + pos); } }
Результат вывода
Позиция 3 является 2
Внимание: Важно, чтобы набор был отсортирован перед выполнением метода binarySearch().
Для получения дополнительной информации посетитеJava Binary Search.
frequency() - Возвращает количество раз, сколько элемент существует в наборе
disjoint() - Проверка того, содержат ли два набора некоторые общие элементы
Например:
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("ArrayList1: " + numbers); int count = Collections.frequency(numbers, 2); System.out.println("Число 2: " + count); ArrayList<Integer> newNumbers = new ArrayList<>(); newNumbers.add(5); newNumbers.add(6); System.out.println("ArrayList2: " + newNumbers); boolean value = Collections.disjoint(numbers, newNumbers); System.out.println("Два списка не пересекаются? " + value); } }
Результат вывода
ArrayList1: [1, 2, 3, 2] Число 2: 2 ArrayList2: [5, 6] Два списка не пересекаются? true
Методы min() и max() в рамке Java Collection Framework используются для поиска минимального и максимального элементов. Например:
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