-
波斯汪
使用Commonslang(以转换)+集合(到min/max)import java.util.Arrays;import java.util.Collections;import org.apache.commons.lang.ArrayUtils;public class MinMaxValue {
public static void main(String[] args) {
char[] a = {'3', '5', '1', '4', '2'};
List b = Arrays.asList(ArrayUtils.toObject(a));
System.out.println(Collections.min(b));
System.out.println(Collections.max(b));
}}请注意Arrays.asList()包装基础数组,因此它不应该太占用内存,也不应该对数组的元素执行副本。
-
当年话下
您可以简单地使用新的Java 8Streams但你得和int.这个stream实用程序类的方法Arrays给你一个IntStream,您可以在上面使用min方法。你也可以max, sum, average,...这个getAsInt方法的值。OptionalIntimport 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方法是还原操作它允许并行化。
-
繁星淼淼
是的,这是在收藏班级,等级。注意,您需要手动将原始char数组转换为字符[]。一个简短的演示:import java.util.*;public class Main {
public static Character[] convert(char[] chars) {
Character[] copy = new Character[chars.length];
for(int i = 0; i < copy.length; i++) {
copy[i] = Character.valueOf(chars[i]);
}
return copy;
}
public static void main(String[] args) {
char[] a = {'3', '5', '1', '4', '2'};
Character[] b = convert(a);
System.out.println(Collections.max(Arrays.asList(b)));
}}