package com.levelup.java.collections; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Optional; import org.junit.Before; import org.junit.Test; import com.google.common.collect.Iterables; import com.google.common.collect.Ordering; import com.google.common.primitives.Ints; /** * This java example will demonstrate how to find the shortest strings in list. * * @author Justin Musgrove * @see <a href='http://www.leveluplunch.com/groovy/examples/get-shortest-length-string-arraylist/'>Find shortest length string in list</a> */ public class FindShortestStringInArrayList { List<String> randomStrings = new ArrayList<>(); @Before public void setUp() { randomStrings.add("George Washington"); randomStrings.add("Zachary Taylor"); randomStrings.add("Andrew Johnson"); randomStrings.add("Warren G. Harding"); randomStrings.add("Calvin Coolidge"); } @Test public void shortest_string_java() { String shortest = randomStrings.get(0); for (String element : randomStrings) { if (element.length() < shortest.length()) { shortest = element; } } assertEquals("Zachary Taylor", shortest); } @Test public void longest_string_sort_java8() { Comparator<String> byLength = (e1, e2) -> e1.length() > e2.length() ? -1 : 1; Optional<String> shortest = randomStrings.stream() .sorted(byLength.reversed()).findFirst(); assertEquals("Zachary Taylor", shortest.get()); } @Test public void longest_string_guava() { Ordering<String> byLength = new Ordering<String>() { public int compare(String left, String right) { return Ints.compare(left.length(), right.length()); } }; Collections.sort(randomStrings, byLength); assertEquals("Zachary Taylor", Iterables.getFirst(randomStrings, "")); } }