猿问

使用Java在原语数组中查找最大/分钟值

使用Java在原语数组中查找最大/分钟值

编写函数以确定数组中的min/max值非常简单,例如:

/**
 * 
 * @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;}

但这不是已经在某个地方完成了吗?


MMMHUHU
浏览 456回答 3
3回答

波斯汪

使用Commonslang(以转换)+集合(到min/max)import&nbsp;java.util.Arrays;import&nbsp;java.util.Collections;import&nbsp;org.apache.commons.lang.ArrayUtils;public&nbsp;class&nbsp;MinMaxValue&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char[]&nbsp;a&nbsp;=&nbsp;{'3',&nbsp;'5',&nbsp;'1',&nbsp;'4',&nbsp;'2'}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;b&nbsp;=&nbsp;Arrays.asList(ArrayUtils.toObject(a)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Collections.min(b)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Collections.max(b)); &nbsp;&nbsp;&nbsp;}}请注意Arrays.asList()包装基础数组,因此它不应该太占用内存,也不应该对数组的元素执行副本。

当年话下

您可以简单地使用新的Java 8Streams但你得和int.这个stream实用程序类的方法Arrays给你一个IntStream,您可以在上面使用min方法。你也可以max,&nbsp;sum,&nbsp;average,...这个getAsInt方法的值。OptionalIntimport&nbsp;java.util.Arrays;public&nbsp;class&nbsp;Test&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int[]&nbsp;tab&nbsp;=&nbsp;{12,&nbsp;1,&nbsp;21,&nbsp;8}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;min&nbsp;=&nbsp;Arrays.stream(tab).min().getAsInt(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;max&nbsp;=&nbsp;Arrays.stream(tab).max().getAsInt(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Min&nbsp;=&nbsp;"&nbsp;+&nbsp;min); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Max&nbsp;=&nbsp;"&nbsp;+&nbsp;max) &nbsp;&nbsp;&nbsp;&nbsp;}}=更新=如果执行时间很重要,并且只想查看数据一次,则可以使用summaryStatistics()像这样的方法import&nbsp;java.util.Arrays;import&nbsp;java.util.IntSummaryStatistics;public&nbsp;class&nbsp;SOTest&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int[]&nbsp;tab&nbsp;=&nbsp;{12,&nbsp;1,&nbsp;21,&nbsp;8}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntSummaryStatistics&nbsp;stat&nbsp;=&nbsp;Arrays.stream(tab).summaryStatistics(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;min&nbsp;=&nbsp;stat.getMin(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;max&nbsp;=&nbsp;stat.getMax(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Min&nbsp;=&nbsp;"&nbsp;+&nbsp;min); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Max&nbsp;=&nbsp;"&nbsp;+&nbsp;max); &nbsp;&nbsp;&nbsp;&nbsp;}}这种方法可以提供比经典循环更好的性能,因为summaryStatistics方法是还原操作它允许并行化。

繁星淼淼

是的,这是在收藏班级,等级。注意,您需要手动将原始char数组转换为字符[]。一个简短的演示:import&nbsp;java.util.*;public&nbsp;class&nbsp;Main&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;Character[]&nbsp;convert(char[]&nbsp;chars)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Character[]&nbsp;copy&nbsp;=&nbsp;new&nbsp;Character[chars.length]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;copy.length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy[i]&nbsp;=&nbsp;Character.valueOf(chars[i]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;copy; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char[]&nbsp;a&nbsp;=&nbsp;{'3',&nbsp;'5',&nbsp;'1',&nbsp;'4',&nbsp;'2'}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Character[]&nbsp;b&nbsp;=&nbsp;convert(a); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Collections.max(Arrays.asList(b))); &nbsp;&nbsp;&nbsp;&nbsp;}}
随时随地看视频慕课网APP

相关分类

Java
我要回答