package com.levelup.java.collections;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.google.common.primitives.Booleans;
/**
* This java example will demonstrate counting the occurrences of
* booleans in a arraylist.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/count-boolean-true-values-in-arraylist/'>Count booleans in list</a>
*/
public class CountBooleansInList {
@Test
public void count_booleans_arraylist_java () {
List<Boolean> values = Lists.newArrayList(true, true, false, true, false);
int count = 0;
for (Boolean value : values) {
if (value.booleanValue()) {
count ++;
}
}
assertEquals(3, count);
}
@Test
public void count_booleans_arraylist_java8 () {
List<Boolean> values = Lists.newArrayList(true, true, false, true, false);
long count = values.stream().filter(p -> p == true).count();
assertEquals(3, count);
}
@Test
public void count_booleans_arraylist_guava () {
List<Boolean> values = Lists.newArrayList(true, true, false, true, false);
int count = Booleans.countTrue(Booleans.toArray(values));
assertEquals(3, count);
}
@Test
public void count_booleans_arraylist_apachecommons () {
List<Boolean> values = Lists.newArrayList(true, true, false, true, false);
int count = CollectionUtils.countMatches(values, new Predicate() {
@Override
public boolean evaluate(Object object) {
Boolean val = (Boolean) object;
return val.booleanValue();
}
});
assertEquals(3, count);
}
}