package com.levelup.java.collections; import static org.junit.Assert.assertEquals; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.Map.Entry; import org.junit.Before; import org.junit.Test; /** * This java example will demonstrate getting min value from a map. * * @author Justin Musgrove * @see <a * href='http://www.leveluplunch.com/java/examples/find-min-value-in-map/'>Min * value in map</a> * */ public class MinValueHashMap { Map<Integer, Integer> mapOfValues; @Before public void setUp() { mapOfValues = new HashMap<Integer, Integer>(); mapOfValues.put(4, 11); mapOfValues.put(5, 2); mapOfValues.put(6, 24); mapOfValues.put(7, 33); mapOfValues.put(8, 1); } @Test public void min_value_map_java() { Map.Entry<Integer, Integer> minEntry = null; for (Map.Entry<Integer, Integer> entry : mapOfValues.entrySet()) { if (minEntry == null || entry.getValue().compareTo(minEntry.getValue()) < 0) { minEntry = entry; } } assertEquals(new Integer(1), minEntry.getValue()); } @Test public void min_value_hashmap_java8() { Comparator<? super Entry<Integer, Integer>> valueComparator = (entry1, entry2) -> entry1.getValue().compareTo(entry2.getValue()); Optional<Entry<Integer, Integer>> minValue = mapOfValues.entrySet() .stream().min(valueComparator); assertEquals(new Integer(1), minValue.get().getValue()); } }