使用Java查找基元数组中的最大/最小值

使用Java查找基元数组中的最大/最小值

编写一个函数来确定数组中的最小/最大值是很简单的,例如:

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

但这不是已经在某处做过的吗?


慕后森
浏览 830回答 3
3回答

白板的微信

使用Commons Lang(转换)+集合(最小/最大)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 8&nbsp;Stream小号,但你必须一起工作int。stream实用程序类的方法Arrays为您提供了IntStream可以使用该min方法的方法。你也可以做max,sum,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方法是简化操作并且允许并行化。

千巷猫影

是的,它是在Collections类中完成的。请注意,您需要手动将原始char数组转换为Character []。一个简短的演示: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,查看更多内容
随时随地看视频慕课网APP