ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Java 算法 > 原文: [https://www.programiz.com/java-programming/algorithms](https://www.programiz.com/java-programming/algorithms) #### 在本教程中,我们将借助示例学习 Java 集合框架提供的不同算法。 Java 集合框架提供了各种算法,可用于处理存储在数据结构中的元素。 Java 中的算法是静态方法,可用于对集合执行各种操作。 由于算法可用于各种集合,因此也称为**通用算法**。 让我们看一下集合框架中可用的不同方法的实现。 * * * ## 1.使用`sort()`排序 集合框架提供的`sort()`方法用于对元素进行排序。 例如, ```java import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { // Creating an array list ArrayList<Integer> 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); } } ``` **输出** ```java Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4] ``` 在此,排序以自然顺序(升序)进行。 但是,我们可以使用比较器接口来自定义`sort()`方法的排序顺序。 要了解更多信息,请访问 [Java Sorting](/java-programming/collections-sort "Java Collections sort()") 。 * * * ## 2.使用`shuffle()`打乱 Java 集合框架的`shuffle()`方法用于破坏数据结构中存在的任何种类的顺序。 它与排序相反。 例如, ```java import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { // Creating an array list ArrayList<Integer> 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); } } ``` **输出**: ```java Sorted ArrayList: [1, 2, 3] ArrayList using shuffle: [2, 1, 3] ``` 当我们运行程序时,`shuffle()`方法将返回随机输出。 打乱算法主要用于需要随机输出的游戏中。 * * * ## 3.常规数据处理 在 Java 中,集合框架提供了可用于处理数据的不同方法。 * `reverse()` - 反转元素的顺序 * `fill()` - 用指定的值替换集合中的每个元素 * `copy()` - 创建从指定源到目标的元素副本 * `swap()` - 交换集合中两个元素的位置 * `addAll()` - 将一个集合的所有元素添加到其他集合 例如, ```java import java.util.Collections; import java.util.ArrayList; class Main { public static void main(String[] args) { // Creating an ArrayList ArrayList<Integer> 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<Integer> 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); } } ``` **输出**: ```java ArrayList1: [1, 2] Reversed ArrayList1: [2, 1] ArrayList1 Using swap(): [1, 2] ArrayList2 using addALl(): [1, 2] ArrayList1 using fill(): [0, 0] ArrayList2 using copy(): [0, 0] ``` **注意**:执行`copy()`方法时,两个列表的大小均应相同。 * * * ## 4.使用`binarySearch()`搜索 Java 集合框架的`binarySearch()`方法搜索指定的元素。 它返回元素在指定集合中的位置。 例如, ```java import java.util.Collections; import java.util.ArrayList; class Main { public static void main(String[] args) { // Creating an ArrayList ArrayList<Integer> 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); } } ``` **输出**: ```java The position of 3 is 2. ``` **注意**:应在执行`binarySearch()`方法之前对集合进行排序。 要了解更多信息,请访问 [Java Binary Search](/java-programming/binarysearch "Java binarySearch()") 。 * * * ## 5.成分 * `frequency()` - 返回元素在集合中存在的次数计数 * `disjoint()` - 检查两个集合是否包含某些公共元素 例如: ```java import java.util.Collections; import java.util.ArrayList; class Main { public static void main(String[] args) { // Creating an 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("Count of 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("Two lists are disjoint: " + value); } } ``` **输出**: ```java ArrayList1: [1, 2, 3, 2] Count of 2: 2 ArrayList2: [5, 6] Two lists are disjoint: true ``` * * * ## 6.寻找极值 Java 集合框架的`min()`和`max()`方法分别用于查找最小和最大元素。 例如, ```java import java.util.Collections; import java.util.ArrayList; class Main { public static void main(String[] args) { // Creating an ArrayList ArrayList<Integer> 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); } } ``` **输出**: ```java Minimum Element: 1 Maximum Element: 3 ```