patternjavaMinor
Getting max and min values from Array
Viewed 0 times
valuesarraygettingminmaxandfrom
Problem
My code works; I am just seeing if there's an optimized way to write these methods or even better perhaps combine them (since majority of their contents look similar).
Here's my unit test (which works as well):
Just seeking feedback regarding optimization and / or code elegance.
public class IntegerUtils {
public static int getMaxValue(int[] array) {
int value = Integer.MIN_VALUE;
if (array.length value) {
value = array[i];
}
}
return value;
}
public static int getMinValue(int[] array) {
int value = Integer.MAX_VALUE;
if (array.length <= 0) {
throw new IllegalArgumentException("Array is empty.");
}
for (int i=0; i < array.length; i++) {
if (array[i] < value) {
value = array[i];
}
}
return value;
}
}Here's my unit test (which works as well):
import org.junit.Test;
public class IntegerUtilsTest {
int[] array = new int[] {1, 2, 3, 58, 47, 229, 40};
@Test
public void shouldBeMaxValue() {
int maxValue = IntegerUtils.getMaxValue(array);
assert(maxValue == 229);
}
@Test
public void shouldBeMinValue() {
int minValue = IntegerUtils.getMinValue(array);
assert(minValue == 1);
}
@Test(expected = IllegalArgumentException.class)
public void shouldBeIllegalArgumentException() {
int[] emptyArray = new int[] {};
int maxValue = IntegerUtils.getMaxValue(emptyArray);
int minValue = IntegerUtils.getMinValue(emptyArray);
}
}Just seeking feedback regarding optimization and / or code elegance.
Solution
Real skill means knowing your libraries. Instead of 20 lines of handcrafted code, I'd rather go for:
... the same for min.
As a general advice: Java is a very mature language, and chances are good that every "simple everyday task" is already solved in the library. (Also note that most books on Java are from the pre-java-8 era and may be considered somewhat outdated today.)
int max = Arrays.stream(array).max().orElseThrow(() -> new IllegalArgumentException("Array is empty"));... the same for min.
As a general advice: Java is a very mature language, and chances are good that every "simple everyday task" is already solved in the library. (Also note that most books on Java are from the pre-java-8 era and may be considered somewhat outdated today.)
Code Snippets
int max = Arrays.stream(array).max().orElseThrow(() -> new IllegalArgumentException("Array is empty"));Context
StackExchange Code Review Q#162656, answer score: 8
Revisions (0)
No revisions yet.