Java 中数组的最小值和最大值

正如我们所说和重复的,Java 提供了预定义的方法,这要归功于其面向对象的概念,这使得编程对我们来说更容易,但通过自己编写这些方法,它可以帮助我们练习一点并保持我们的形状。回到我们的主题,要找到 n 个元素数组中的最大值和最小值,您需要知道有必要从第一个元素到最后一个元素遍历整个数组,同时将迄今为止找到的最大/最小元素与当前元素进行比较。

在本文的示例中, 我们将介绍四种解决方案来查找数组中的最小值和最大值:

- 朴素解决方案
- Java 8
- Google 的 Guava Api 库
- Apache Commons 库

这是一个 Java 程序,它返回数组中最小值的值和位置。

public class min_max_array {
public static void main(String[] args) {
int maxVal = Integer.MAX_VALUE;
int minVal = Integer.MIN_VALUE;

int array[] = {51, 24, 19, 5, 37, 76, 61, 99, 101, 36};

for (int number:array)
System.out.print(number+ ”);

for(int i = 0; i < array.length; i++){
if(array[i] < maxVal)
maxVal = array[i];
if(array[i] > minVal)
minVal = array[i];
}

System.out.print(\n最小值 = ”+maxVal);
System.out.print(\n最大值 = ”+minVal);
}
}
运行时:

51 24 19 5 37 76 61 99 101 36 
最小值 = 5
最大值 = 101
该示例首先初始化变量minVal with Integer.MAX_VALUE这是 int 可以取。这样做是为了确保初始值不会意外小于数组中的第一个值。
其次,程序遍历数组并将每个值与 minVal。如果 表小于 minVal 所以 minVal 接收此元素的值。
最后,显示在数组中找到的最小值。

Java 8

使用 Java 8,很容易找到最大和最小的数字。在第一段代码中,我们将数组转换为流,然后调用方法 Arrays.stream().max()它返回一个 OptionalInt 并包含找到的最大值。
第二个代码使用 IntStream,一个专门用于 int 基元的流,从这里可以调用 intStream.of().max()返回 OptionalInt.

public void max_array_java8 (int[] tab) {
OptionalInt max = Arrays.stream(tab).max();
//或
OptionalInt max = IntStream.of(tab).max();
}
public void min_array_java8 (int[] tab) {
OptionalInt min = Arrays.stream(tab).min();
//或
OptionalInt min = IntStream.of(tab).min();
}

Google 的 Guava API

Guava 的 Ints 类提供了两种方法Ints.max()Ints.min()分别返回最大值和最小值。为了能够使用这个API,可以从Google Guava.
à
public static int max_array_guava (int[] tab) {
int max = Ints.max(tab);
返回最大值;
}
public static int min_array_guava (int[] tab) {
int min = Ints.min(tab);
返回最小值;
}

Apache Commons

Apache commons 的 NumberUtils 类为 java 提供了额外的功能,并包含两个方法NumberUtils.max()NumberUtils.min()分别返回最大值和最小值。为了能够使用这个库,可以从api Apache Commons.

public static int max_array_apache (int[] tab) {
int max = NumberUtils.max(tab);
返回最大值;
}
public static int min_array_apache (int[] tab) {
int min = NumberUtils.min(tab);
返回最小值;
}
参考:
查找最小值 &使用最小比较在数组中的最大值