Het is triviaal om een functie te schrijven om de min/max waarde in een matrix te bepalen, zoals:
/**
*
* @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;
}
maar wordt dit niet al ergens gedaan?
Gebruik Commons Lang (om te zetten) + Collecties (om te minen/maxen)
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));
}
}
Merk op dat Arrays.asList()
de onderliggende array omwikkelt, dus het zou niet te geheugen intensief moeten zijn en het zou geen kopie moeten uitvoeren op de elementen van de array.
Ja, dat wordt gedaan in de klasse Collections. Merk op dat je je primitieve char array handmatig moet converteren naar een Character[].
Een korte demo:
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)));
}
}
Hier is een utiliteitsklasse met min/max
methoden voor primitieve types: Primitives.java