JAVA用迭代的思想,不遍历,找出数组中的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA用迭代的思想,不遍历,找出数组中的最大值相关的知识,希望对你有一定的参考价值。

现在java8中的stream的IntStream可以方便找到数组中的最大值,而且现在stream已经把遍历内置到了jdk中,代码更整洁


通过把int数组直接转化为IntStream,然后再用内置的max方法直接求得最大值即可

示例代码如下:

int[] arr = 2,53,67,33,12,90,49;
System.out.println(IntStream.of(arr).max().getAsInt());

运行结果


java8的新特性stream(流)处理集合增加更多便利,同时提升了运算的效率,可以说是优雅的编程形式,把循环内置到了jdk中,只暴露了你想要什么,这种已经都是声明式编程,不再是以往的命令式编程了

想了解更多的关于stream的知识,可以去看看这篇文章

http://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/

参考技术A public class FindMaxNum
public static void main(String[] args)
int ary[] = 6, 6, 8, 9, 10 ;
int a = ary[0];
System.out.println(getMaxNum(ary, a));

public static int getMaxNum(int src[], int a)
if (src.length == 0)
return -1;
if (src.length == 1)
if (src[0] < a)
return a;
else
return src[0];


if (a < src[0])
a = src[0];

int length = src.length;
int des[] = new int[length - 1];
System.arraycopy(src, 1, des, 0, length - 1);
int maxNum = getMaxNum(des, a);
return maxNum;


少了一个判断,我用递归迭代,没次移走一个数,不符合你要求?本回答被提问者和网友采纳
参考技术B public static int findMax(int[] nums, int i)

if (i == 0) return nums[0];
return Math.max(nums[i], findMax(nums,i - 1));

public static void main(String[] args)
int[] nums = 1,2,3,4,5;
System.out.println(findMax(nums,nums.length - 1));
参考技术C 请问为什么IntStream编译说找不到符合 参考技术D 数组不是有个排序方法么 Arrays.sort(ia);
不过方法的内部实现是不是遍历我就不知道了,
最后直接打印最后一个数组元素就好了,ia[i], i = ia.length-1

以上是关于JAVA用迭代的思想,不遍历,找出数组中的最大值的主要内容,如果未能解决你的问题,请参考以下文章

java从一堆数中找出和已知数最接近的数

用 for i in 来迭代遍历去除列表中的重复的数据

编写程序,找出数组a中前n个元素中的最小元素及其下标

java中怎么样子找出数组中重复的数,并去除

用java找出这几个list,所有可能的组合,并且组合结果的list中的数据不允许重复

数组中有一个数字出现次数超过数组长度一半,找出这个数字(用C语言解决)。要求时间复杂度尽量小。