使用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;}但这不是已经在某处做过的吗?
3 回答
手掌心
TA贡献1942条经验 获得超3个赞
使用Commons Lang(转换)+集合(最小/最大)
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()
包装底层数组,因此它不应该太占用内存,也不应该对数组元素执行复制。
德玛西亚99
TA贡献1770条经验 获得超3个赞
你可以简单地使用新的Java 8 Stream
小号,但你必须一起工作int
。
stream
实用程序类的方法Arrays
为您提供了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
方法是简化操作并且允许并行化。
慕标琳琳
TA贡献1830条经验 获得超9个赞
是的,它是在Collections类中完成的。请注意,您需要手动将原始char数组转换为Character []。
一个简短的演示:
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))); }}
添加回答
举报
0/150
提交
取消