package com.levelup.java.collections; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; import org.apache.commons.lang3.ObjectUtils; import org.junit.Test; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; /** * This java example will demonstrate finding * the first non null object in a list. * * @author Justin Musgrove * @see <a href='http://www.leveluplunch.com/java/'>Find first non null</a> * */ public class FindFirstNonNull { @Test public void find_first_non_null_list_java () { List<String> strings = new ArrayList<String>(); strings.add(null); strings.add("Hello"); strings.add(null); strings.add("World"); String firstNonNull = null; for (String string : strings) { if (string != null) { firstNonNull = string; break; } } assertEquals("Hello", firstNonNull); } @Test public void find_first_non_null_list_java8_lambda () { List<String> strings = Lists.newArrayList( null, "Hello", null, "World"); Optional<String> firstNonNull = strings .stream() .filter(p -> p != null) // .filter(Objects::nonNull) .findFirst(); assertEquals("Hello", firstNonNull.get()); } @Test public void find_first_non_null_list_guava () { List<String> strings = Lists.newArrayList( null, "Hello", null, "World"); String firstNonNull = Iterables.find(strings, Predicates.notNull()); assertEquals("Hello", firstNonNull); } @Test public void find_first_non_null_list_apache () { List<String> strings = new ArrayList<String>(); strings.add(null); strings.add("Hello"); strings.add(null); strings.add("World"); String firstNonNull = (String) ObjectUtils.firstNonNull(strings.toArray()); assertEquals("Hello", firstNonNull); } }