package com.levelup.java.collections;
import static org.junit.Assert.assertEquals;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.OptionalInt;
import org.apache.commons.lang3.ObjectUtils;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.google.common.primitives.Ints;
/**
* This java example will demonstrate getting the min value from list.
*
* @author Justin Musgrove
* @see <a
* href='http://www.leveluplunch.com/java/examples/min-value-in-list/'>Min
* value in list</a>
*
*/
public class MinValueFromList {
private static List<Integer> CENTERS_ROOKIE_YEAR = Lists.newArrayList(1946,
1988, 1970, 1931, 1940, 1920, 1980, 1953, 1960, 1974, 1987);
@Test
public void find_min_value_from_list_of_integers_java() {
Integer minElement = Collections.min(CENTERS_ROOKIE_YEAR);
assertEquals(new Integer(1920), minElement);
}
@Test
public void find_min_value_from_list_of_integers_java8() {
OptionalInt minElement = CENTERS_ROOKIE_YEAR.stream().mapToInt(p -> p)
.min();
assertEquals(1920, minElement.getAsInt());
// or
Optional<Integer> minElement2 = CENTERS_ROOKIE_YEAR.stream().reduce(
Integer::min);
assertEquals(new Integer(1920), minElement2.get());
}
@Test
public void find_min_value_from_list_of_integers_guava_ordering() {
Ordering<Integer> byYear = new Ordering<Integer>() {
@Override
public int compare(Integer left, Integer right) {
return Ints.compare(left, right);
}
};
assertEquals(new Integer(1920), byYear.min(CENTERS_ROOKIE_YEAR));
}
@Test
public void find_min_value_from_list_of_integers_guava_ordering_shorthand() {
Integer minElement = Ordering.natural().min(CENTERS_ROOKIE_YEAR);
assertEquals(new Integer(1920), minElement);
}
@Test
public void find_min_value_from_list_of_integers_apache() {
Integer minElement = ObjectUtils.min(CENTERS_ROOKIE_YEAR
.toArray(new Integer[CENTERS_ROOKIE_YEAR.size()]));
assertEquals(new Integer(1920), minElement);
}
}