千家信息网

java查找数组中最大值的方法有哪些

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇"java查找数组中最大值的方法有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这
千家信息网最后更新 2026年11月04日java查找数组中最大值的方法有哪些

这篇"java查找数组中最大值的方法有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"java查找数组中最大值的方法有哪些"文章吧。

方式一:循环对比

循环对比的执行流程如下图所示:

从上图可以看出,循环对比的核心是定义一个最大值,然后循环对比每一个元素,如果元素的值大于最大值就将最大值更新为此元素的值,再进行下一次比较,直到循环结束我们就能找到最大值了,实现代码如下:

public class ArrayMaxTest {
public static void main(String[] args) {
int[] arr = {3, 7, 2, 1, -4};
int max = findMaxByFor(arr); // 查找最大值
System.out.println("最大值是:" + max);
}

/**
* 通过 for 循环查找最大值
* @param arr 待查询数组
* @return 最大值
*/
private static int findMaxByFor(int[] arr) {
int max = 0; // 最大值
for (int item : arr) {
if (item > max) { // 当前值大于最大值,赋值为最大值
max = item;
}
}
return max;
}
}

以上程序的执行结果为:

最大值是:7

方式二:递归对比

递归对比的核心是先定义两个位置(起始位置和结束位置),每次对比开始位置和结束位置值的大小,当开始位置的值大于结束位置值时,将最大值设置为开始位置的值,然后将结束位置 -1(往前移动一位),继续递归调用;相反,当结束位置的值大于开始位置时,将最大值设置为结束位置的值,将开始位置 +1(往后移动一位),继续递归调用对比,直到递归结束就可以返回最大值了,执行流程如下图所示:


实现代码如下:

public class ArrayMax {
public static void main(String[] args) {
int[] arr = {3, 7, 2, 1, -4};
int max = findMaxByRecursive(arr, 0, arr.length - 1, 0); // 根据 Collections 查找最大值
System.out.println("最大值是:" + max);
}

/**
* 根据递归查询最大的值
* @param arr 待查询数组
* @param head 最前面的元素的下标
* @param last 最末尾的元素的下标
* @param max (临时)最大值
* @return 最大值
*/
private static int findMaxByRecursive(int[] arr, int head, int last, int max) {
if (head == last) {
// 递归完了,返回结果
return max;
} else {
if (arr[head] > arr[last]) {
max = arr[head]; // 赋最大值
// 从后往前移动递归
return findMaxByRecursive(arr, head, last - 1, max);
} else {
max = arr[last]; // 赋最大值
// 从前往后移动递归
return findMaxByRecursive(arr, head + 1, last, max);
}
}
}
}

以上程序的执行结果为:

最大值是:7

方式三:依赖 Arrays.sort() 实现

根据 Arrays.sort 方法可以将数组从小到大进行排序,排序完成之后,取最后一位的值就是最大值了,实现代码如下:

import java.util.Arrays;

public class ArrayMax {
public static void main(String[] args) {
int[] arr = {3, 7, 2, 1, -4};
int max = findMaxBySort(arr); // 根据 Arrays.sort 查找最大值
System.out.println("最大值是:" + max);
}

/**
* 根据 Arrays.sort 查找最大值
* @param arr 待查询数组
* @return 最大值
*/
private static int findMaxBySort(int[] arr) {
Arrays.sort(arr);
return arr[arr.length - 1];
}
}

以上程序的执行结果为:

最大值是:7

方式四:根据 Arrays.stream() 实现

stream 是 JDK 8 新增的核心功能之一,使用它我们可以很方便的实现很多功能,比如查找最大值、最小值等,实现代码如下:

import java.util.Arrays;

public class ArrayMax {
public static void main(String[] args) {
int[] arr = {3, 7, 2, 1, -4};
int max = findMaxByStream(arr); // 根据 stream 查找最大值
System.out.println("最大值是:" + max);
}

/**
* 根据 stream 查找最大值
* @param arr 待查询数组
* @return 最大值
*/
private static int findMaxByStream(int[] arr) {
return Arrays.stream(arr).max().getAsInt();
}
}

以上程序的执行结果为:

最大值是:7

方式五:依赖 Collections.max() 实现

使用 Collections 集合工具类也可以查找最大值和最小值,但在使用之前我们想要将数组(Array)转换成集合(List),实现代码如下:

import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;
import java.util.Collections;

public class ArrayMax {
public static void main(String[] args) {
int[] arr = {3, 7, 2, 1, -4};
int max = findMaxByCollections(arr); // 根据 Collections 查找最大值
System.out.println("最大值是:" + max);
}

/**
* 根据 Collections 查找最大值
* @param arr 待查询数组
* @return 最大值
*/
private static int findMaxByCollections(int[] arr) {
List list = Arrays.asList(
org.apache.commons.lang3.ArrayUtils.toObject(arr));
return Collections.max(list);
}
}

以上程序的执行结果为:

最大值是:7

扩展知识:Arrays.sort 方法执行原理

为了搞明白 Arrays#sort 方法执行的原理,我们查看了源码发现 sort 方法的核心是通过循环进行排序的,源码如下:

for (int i = left, j = i; i < right; j = ++i) {
int ai = a[i + 1];
while (ai < a[j]) {
a[j + 1] = a[j];
if (j-- == left) {
break;
}
}
a[j + 1] = ai;
}

执行流程如下图所示:

以上就是关于"java查找数组中最大值的方法有哪些"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

最大 最大值 位置 数组 递归 方法 循环 结果 查询 代码 元素 内容 方式 程序 核心 移动 流程 知识 排序 最小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 互联网科技公司华为 金融科技还是互联网 期待互联网科技 成都互联网科技公司 苏州互联网科技贷款公司 互联网科技大会 互联网科技咨询 科技类的互联网平台 深圳卡尔迅互联网科技有限公司怎么样 农村开互联网科技讲堂 西藏七维空间互联网科技有限公司 厦门比较好的科技互联网公司 世界互联网科技公司市值排名 电子商务与互联网科技的关系 风投北京互联网科技 郑州欣桑互联网科技有限公司 互联网高科技行业有哪些企业 上海万顺科技互联网有限公司招聘 北京军民互联网科技公司 今日互联网科技 互联网金融与金融科技 嘟嘟瓜互联网科技 壕鑫互联网络科技 洛阳昕诺飞互联网科技有限公司 亳州好赞互联网科技有限公司 浙南科技城互联网大厦建设工程 互联网数据科技专业 锡山区互联网智能科技产品供应 广州全民伙伴互联网科技有限公司
0