package com.levelup.java.collections;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Collections;
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 longest string in a list.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/find-longest-length-string-in-arraylist/'>Find longest length string in list</a>
*/
public class FindLongestStringInArrayList {
List<String> randomStrings = new ArrayList<>();
@Before
public void setUp() {
randomStrings.add("XVxOPHS");
randomStrings.add("ttnBGouocZ");
randomStrings.add("yHYQbXq");
randomStrings.add("fkanCo");
randomStrings.add("cxBuL");
}
@Test
public void longest_string_java() {
String longestString = randomStrings.get(0);
for (String element : randomStrings) {
if (element.length() > longestString.length()) {
longestString = element;
}
}
assertEquals("ttnBGouocZ", longestString);
}
@Test
public void longest_string_sort_java8() {
Optional<String> longest = randomStrings.stream()
.sorted((e1, e2) -> e1.length() > e2.length() ? -1 : 1)
.findFirst();
assertEquals("ttnBGouocZ", longest.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.reverse());
assertEquals("ttnBGouocZ", Iterables.getFirst(randomStrings, ""));
}
}