package com.levelup.java.collections;
import static org.junit.Assert.assertFalse;
import java.util.Collections;
import java.util.ListIterator;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.IteratorUtils;
import org.apache.commons.collections.iterators.EmptyListIterator;
import org.junit.Test;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
/**
* This java example will demonstrate how to return an empty list iterator.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/return-empty-iterator-instead-of-null/'>Return empty iterator</a>
*/
public class ReturnEmptyListIterator {
@Test
public void return_empty_list_iterator_java () {
ListIterator<String> strings = Collections.emptyListIterator();
assertFalse(strings.hasNext());
}
@Test
public void return_empty_list_iterator_guava () {
ListIterator<String> strings = ImmutableList.<String>of().listIterator();
assertFalse(strings.hasNext());
}
@SuppressWarnings("unchecked")
@Test
public void return_empty_list_iterator_apache () {
ListIterator<String> strings = IteratorUtils.emptyListIterator();
assertFalse(strings.hasNext());
}
class DomainObject {
ListIterator<String> getStrings () {
return null;
}
}
/**
* Used for exception example
*/
@SuppressWarnings("unused")
private void return_empty_list_iterator_java_exception () {
DomainObject domain = null; // dao populate domain
ListIterator<String> strings;
if (domain != null && domain.getStrings() != null
&& domain.getStrings().hasNext()) {
strings = domain.getStrings();
} else {
strings = Collections.emptyListIterator();
}
//...
}
/**
* Used for exception example
*/
@SuppressWarnings("unused")
private void return_empty_list_iterator_guava_exception () {
DomainObject domain = null; // dao populate domain
ListIterator<String> strings = Objects.firstNonNull(
domain != null ? domain.getStrings() : null,
ImmutableList.<String>of().listIterator());
//...
}
/**
* Used for exception example
*/
@SuppressWarnings({ "unchecked", "unused" })
private void return_empty_list_iterator_apache_commons_exception () {
DomainObject domain = null; // dao populate domain
ListIterator<String> strings;
if (domain != null && !CollectionUtils.sizeIsEmpty(domain.getStrings())) {
strings = domain.getStrings();
} else {
strings = EmptyListIterator.INSTANCE;
}
//...
}
}