Java学习教程,从入门到精通, Java Algorithms(算法)语法知识点(66)

server/2024/12/26 16:08:32/

Java Algorithms(算法)语法知识点及案例代码

Java集合框架提供了各种算法,可用于处理存储在数据结构中的元素。
Java中的算法是静态方法,可用于对集合执行各种操作。
由于算法可用于各种集合,因此也称为通用算法

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

1.使用sort()排序

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。

2.使用shuffle进行洗牌

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

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("Sorted ArrayList: " + numbers);//使用shuffle()方法Collections.shuffle(numbers);System.out.println("使用shuffle的ArrayList: " + numbers);}
}

输出结果

Sorted ArrayList: [1, 2, 3]
使用shuffle的ArrayList: [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) {//创建一个ArrayListArrayList<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<>();// 使用 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()方法搜索指定的元素。它返回元素在指定集合中的位置。例如,

import java.util.Collections;
import java.util.ArrayList;class Main {public static void main(String[] args) {//创建一个ArrayListArrayList<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。

5.组合

  • frequency() - 返回元素在集合中存在的次数计数
  • disjoint() - 检查两个集合是否包含一些公共元素

例如,

import java.util.Collections;
import java.util.ArrayList;class Main {public static void main(String[] args) {//创建一个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("两个列表是不相交的? " + value);}
}

输出结果

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

6.寻找最大和最小元素

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

import java.util.Collections;
import java.util.ArrayList;class Main {public static void main(String[] args) {//创建一个ArrayListArrayList<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


http://www.ppmy.cn/server/153066.html

相关文章

Linux学习——9_Ubuntu Linux操作系统

Ubuntu Linux操作系统 Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统&#xff0c;于2004年10月公布 Ubuntu是一个以桌面应用为主的Linux发行版操作系统 Ubuntu拥有庞大的社区力量&#xff0c;用户可以方便地从社区…

【电机控制器】STC8H1K芯片——比较器

【电机控制器】STC8H1K芯片——比较器 文章目录 [TOC](文章目录) 前言一、比较器内部结构二、比较器控制寄存器CMPCR1三、比较器控制寄存器CMPCR2总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、比较器内部结构 二…

【JavaEE进阶】@RequestMapping注解

目录 &#x1f4d5;前言 &#x1f334;项目准备 &#x1f332;建立连接 &#x1f6a9;RequestMapping注解 &#x1f6a9;RequestMapping 注解介绍 &#x1f384;RequestMapping是GET还是POST请求&#xff1f; &#x1f6a9;通过Fiddler查看 &#x1f6a9;Postman查看 …

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

List直接使用removeAll报错

List直接使用removeAll报错 需要先将list转换才能使用 原因是&#xff1a; removeAll 方法在 Java 中用于从当前列表中删除另一个列表中存在的所有元素。如果直接对 List 接口的一个实现使用 removeAll 方法抛出异常&#xff0c;可能的原因有&#xff1a; 不同的List实现&am…

家用无线路由器的 2.4GHz 和 5GHz

家中的无线路由器 WiFi 名称有两个&#xff0c;一个后面带有 “5G” 的标记&#xff0c;这让人产生疑问&#xff1a;“连接带‘5G’的 WiFi 是不是速度更快&#xff1f;” 实际上&#xff0c;这里的 “5G” 并不是移动通信中的 5G 网络&#xff0c;而是指路由器的工作频率为 5G…

电路设计-恒流电路

一、 电路作用 恒流电路是一种能够在一定条件下&#xff0c;使输出电流保持恒定不变的电路。不管负载电阻如何变化或者输入电压如何波动&#xff0c;其输出电流都能维持在一个设定的值。常用于LED驱动和电池充电 二、典型电路 1.三极管恒流电路 图1 …

《Vue进阶教程》(11)watch的实现详细教程

1 基本概念 1) 什么是watch watch叫侦听器, 侦听某个响应式数据, 当数据改变时, 重新执行对应的回调 所以, watch可以建立数据->函数的对应关系 2) 基本使用 第一种: 接收引用了属性的副作用函数做为参数 <!DOCTYPE html> <html lang"en"><h…