编写一个函数来确定数组中的最小/最大值是很简单的,例如:
/**
*
* @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;
}
但这不是已经在某个地方做过了吗?
使用Commons Lang(转换)+ Collections(到min/max)
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()包装底层数组,因此它不应该占用太多内存,也不应该对数组的元素执行复制。
通过对数组排序,可以得到min / max的第一个和最后一个值。
import java.util.Arrays;
public class apples {
public static void main(String[] args) {
int a[] = {2,5,3,7,8};
Arrays.sort(a);
int min =a[0];
System.out.println(min);
int max= a[a.length-1];
System.out.println(max);
}
}
尽管排序操作比用简单的循环查找最小/最大值更昂贵。但当性能不是问题时(例如,小数组,或者成本与应用程序无关),这是一个相当简单的解决方案。
注意:数组在此之后也会被修改。