3 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用Commons Lang(轉(zhuǎn)換)+集合(最小/最大)
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)); }}
請(qǐng)注意,Arrays.asList()
包裝底層數(shù)組,因此它不應(yīng)該太占用內(nèi)存,也不應(yīng)該對(duì)數(shù)組元素執(zhí)行復(fù)制。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
你可以簡(jiǎn)單地使用新的Java 8 Stream
小號(hào),但你必須一起工作int
。
stream
實(shí)用程序類的方法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) }}
== ==更新
如果執(zhí)行時(shí)間很重要,并且只想一次使用這樣的summaryStatistics()
方法就可以瀏覽數(shù)據(jù)
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); }}
這種方法可以提供比經(jīng)典循環(huán)更好的性能,因?yàn)樵?a >summaryStatistics
方法是簡(jiǎn)化操作并且允許并行化。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
是的,它是在Collections類中完成的。請(qǐng)注意,您需要手動(dòng)將原始char數(shù)組轉(zhuǎn)換為Character []。
一個(gè)簡(jiǎn)短的演示:
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))); }}
添加回答
舉報(bào)