编写一个函数来确定数组中的最小/最大值是很简单的,例如:
/**
*
* @param chars
* @return the max value in the array of chars
*/
private static int maxValue(char[] chars) {
int max = chars[0];
for (int ktr = 0; ktr < chars.length; ktr++) {
if (chars[ktr] > max) {
max = chars[ktr];
}
}
return max;
}
但这不是已经在某个地方做过了吗?
你可以简单地使用新的Java 8 Streams,但你必须使用int。
实用工具类Arrays的stream方法为您提供了一个IntStream,您可以在该IntStream上使用min方法。你也可以用max, sum, average…
getAsInt方法用于从OptionalInt中获取值
import java.util.Arrays;
public class Test {
public static void main(String[] args){
int[] tab = {12, 1, 21, 8};
int min = Arrays.stream(tab).min().getAsInt();
int max = Arrays.stream(tab).max().getAsInt();
System.out.println("Min = " + min);
System.out.println("Max = " + max)
}
}
= = = =更新
如果执行时间很重要,并且希望只遍历一次数据,那么可以像这样使用summaryStatistics()方法
import java.util.Arrays;
import java.util.IntSummaryStatistics;
public class SOTest {
public static void main(String[] args){
int[] tab = {12, 1, 21, 8};
IntSummaryStatistics stat = Arrays.stream(tab).summaryStatistics();
int min = stat.getMin();
int max = stat.getMax();
System.out.println("Min = " + min);
System.out.println("Max = " + max);
}
}
这种方法可以提供比经典循环更好的性能,因为summaryStatistics方法是一个约简操作,并且它允许并行化。
获取数组的最小/最大值的基本方法。如果您需要无序数组,您可以创建一个副本或将其传递给返回最小值或最大值的方法。如果不是,排序数组更好,因为它在某些情况下执行得更快。
public class MinMaxValueOfArray {
public static void main(String[] args) {
int[] A = {2, 4, 3, 5, 5};
Arrays.sort(A);
int min = A[0];
int max = A[A.length -1];
System.out.println("Min Value = " + min);
System.out.println("Max Value = " + max);
}
}