package com.levelup.java.collections;
import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.Optional;
import org.apache.commons.collections.CollectionUtils;
import org.junit.Test;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
/**
* This java example will demonstrate finding an element in lists
* with straight up java, java 8 lambda expression and google Guava.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/find-element-in-list/'>Find elements in List</a>
*
*/
public class FindElementsInList {
@Test
public void find_elements_in_list_with_java () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Integer value = null;
for (Integer number : numbers) {
if (number == 3) {
value = number;
}
}
assertEquals(new Integer(3), value);
}
@Test
public void find_elements_in_list_with_java8_lambda () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Optional<Integer> value = numbers
.stream()
.filter(a -> a == 3)
.findFirst();
assertEquals(new Integer(3), value.get());
}
@Test
public void find_elements_in_lists_with_guava () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Integer value = Iterables.find(numbers, new Predicate<Integer> () {
public boolean apply(Integer number) {
return number == 3 ;
}
});
assertEquals(new Integer(3), value);
}
@Test
public void find_elements_in_list_with_apachecommons () {
List <Integer> numbers = Lists.newArrayList(
new Integer(1),
new Integer(2),
new Integer(3));
Integer value = (Integer) CollectionUtils.find(numbers, new org.apache.commons.collections.Predicate() {
public boolean evaluate(Object number) {
return ((Integer)number).intValue() == 3 ;
}
});
assertEquals(new Integer(3), value);
}
}