在本教程中,我们将借助示例学习 Java 集合框架提供的不同算法。
Java 集合框架提供了各种算法,可用于处理存储在数据结构中的元素。
Java 中的算法是静态方法,可用于对集合执行各种操作。
由于算法可用于各种集合,因此也称为通用算法。
让我们看一下集合框架中可用的不同方法的实现。
1.使用sort()排序
集合框架提供的sort()方法用于对元素进行排序。 例如,
import java.util.ArrayList;import java.util.Collections;class Main {public static void main(String[] args) {// Creating an array listArrayList<Integer> numbers = new ArrayList<>();// Add elementsnumbers.add(4);numbers.add(2);numbers.add(3);System.out.println("Unsorted ArrayList: " + numbers);// Using the sort() methodCollections.sort(numbers);System.out.println("Sorted ArrayList: " + numbers);}}
输出
Unsorted ArrayList: [4, 2, 3]Sorted ArrayList: [2, 3, 4]
在此,排序以自然顺序(升序)进行。 但是,我们可以使用比较器接口来自定义sort()方法的排序顺序。
要了解更多信息,请访问 Java Sorting“) 。
2.使用shuffle()打乱
Java 集合框架的shuffle()方法用于破坏数据结构中存在的任何种类的顺序。 它与排序相反。 例如,
import java.util.ArrayList;import java.util.Collections;class Main {public static void main(String[] args) {// Creating an array listArrayList<Integer> numbers = new ArrayList<>();// Add elementsnumbers.add(1);numbers.add(2);numbers.add(3);System.out.println("Sorted ArrayList: " + numbers);// Using the shuffle() methodCollections.shuffle(numbers);System.out.println("ArrayList using shuffle: " + numbers);}}
输出:
Sorted ArrayList: [1, 2, 3]ArrayList using shuffle: [2, 1, 3]
当我们运行程序时,shuffle()方法将返回随机输出。
打乱算法主要用于需要随机输出的游戏中。
3.常规数据处理
在 Java 中,集合框架提供了可用于处理数据的不同方法。
reverse()- 反转元素的顺序fill()- 用指定的值替换集合中的每个元素copy()- 创建从指定源到目标的元素副本swap()- 交换集合中两个元素的位置addAll()- 将一个集合的所有元素添加到其他集合
例如,
import java.util.Collections;import java.util.ArrayList;class Main {public static void main(String[] args) {// Creating an ArrayListArrayList<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 addAllnewNumbers.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);}}
输出:
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()方法搜索指定的元素。 它返回元素在指定集合中的位置。 例如,
import java.util.Collections;import java.util.ArrayList;class Main {public static void main(String[] args) {// Creating an ArrayListArrayList<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);}}
输出:
The position of 3 is 2.
注意:应在执行binarySearch()方法之前对集合进行排序。
要了解更多信息,请访问 Java Binary Search“) 。
5.成分
frequency()- 返回元素在集合中存在的次数计数disjoint()- 检查两个集合是否包含某些公共元素
例如:
import java.util.Collections;import java.util.ArrayList;class Main {public static void main(String[] args) {// Creating an ArrayListArrayList<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);}}
输出:
ArrayList1: [1, 2, 3, 2]Count of 2: 2ArrayList2: [5, 6]Two lists are disjoint: true
6.寻找极值
Java 集合框架的min()和max()方法分别用于查找最小和最大元素。 例如,
import java.util.Collections;import java.util.ArrayList;class Main {public static void main(String[] args) {// Creating an ArrayListArrayList<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);}}
输出:
Minimum Element: 1Maximum Element: 3
