使用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貢獻1883條經驗 獲得超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()包裝底層數組,因此它不應該太占用內存,也不應該對數組元素執行復制。
天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
你可以簡單地使用新的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貢獻1829條經驗 獲得超7個贊
是的,它是在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
提交
取消
