Java Algorithms(算法)

在本教程中,我们将借助示例学习Java集合框架提供的不同算法。

Java集合框架提供了各种算法,可用于处理存储在数据结构中的元素。

Java中的算法是静态方法,可用于对集合执行各种操作。

由于算法可用于各种集合,因此也称为通用算法

让我们看看集合框架中可用的不同方法的实现。

1.使用sort()排序

sort()集合框架提供的方法用于对元素进行排序。例如,

importjava.util.ArrayList;importjava.util.Collections;classMain{publicstaticvoidmain(String[]args){//创建数组列表ArrayList<Integer>numbers=newArrayList<>();//添加元素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

2.使用shuffle进行洗牌

Java Collections框架的shuffle()方法用于打乱数据结构中出现的任何顺序。它的作用与排序正好相反。例如

importjava.util.ArrayList;importjava.util.Collections;classMain{publicstaticvoidmain(String[]args){//创建数组列表ArrayList<Integer>numbers=newArrayList<>();//添加元素numbers.add(1);numbers.add(2);numbers.add(3);System.out.println("SortedArrayList:"+numbers);//使用shuffle()方法Collections.shuffle(numbers);System.out.println("使用shuffle的ArrayList:"+numbers);}}

输出结果

SortedArrayList:[1,2,3]使用shuffle的ArrayList:[2,1,3]

当我们运行程序时,shuffle()方法将返回随机输出。

洗牌算法主要用于需要随机输出的游戏中。

3.常规数据处理

在Java中,集合框架提供了可用于处理数据的不同方法。

  • reverse() - 反转元素的顺序

  • fill() - 用指定的值替换集合中的每个元素

  • copy() - 创建从指定源到目标的元素副本

  • swap() - 交换集合中两个元素的位置

  • addAll() - 将集合的所有元素添加到其他集合

例如,

importjava.util.Collections;importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建一个ArrayListArrayList<Integer>numbers=newArrayList<>();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=newArrayList<>();//使用addAllnewNumbers.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()方法时,两个列表的大小应相同。

4.使用binarySearch()搜索

Java集合框架的binarySearch()方法搜索指定的元素。它返回元素在指定集合中的位置。例如,

importjava.util.Collections;importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建一个ArrayListArrayList<Integer>numbers=newArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);//使用binarySearch()intpos=Collections.binarySearch(numbers,3);System.out.println("3的位置是"+pos);}}

输出结果

3的位置是2

注意:在执行binarySearch()方法之前,应对集合进行排序。

要了解更多信息,请访问Java Binary Search

5.组合

  • frequency() - 返回元素在集合中存在的次数计数

  • disjoint() - 检查两个集合是否包含一些公共元素

例如,

importjava.util.Collections;importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建一个ArrayListArrayList<Integer>numbers=newArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);numbers.add(2);System.out.println("ArrayList1:"+numbers);intcount=Collections.frequency(numbers,2);System.out.println("Countof2:"+count);ArrayList<Integer>newNumbers=newArrayList<>();newNumbers.add(5);newNumbers.add(6);System.out.println("ArrayList2:"+newNumbers);booleanvalue=Collections.disjoint(numbers,newNumbers);System.out.println("两个列表是不相交的?"+value);}}

输出结果

ArrayList1:[1,2,3,2]Countof2:2ArrayList2:[5,6]两个列表是不相交?true

6.寻找最大和最小元素

Java集合框架的min()和max()方法分别用于查找最小和最大元素。例如,

importjava.util.Collections;importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建一个ArrayListArrayList<Integer>numbers=newArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);//使用min()intmin=Collections.min(numbers);System.out.println("最小元素:"+min);//使用max()intmax=Collections.max(numbers);System.out.println("最大元素:"+max);}}

输出结果

最小元素:1最大元素:3
编辑于2024-05-20 14:46