package com.levelup.java.collections;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.junit.Before;
import org.junit.Test;
import com.google.common.base.Objects;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
/**
* This java example will demonstrate how to check if every
* element in the collection satisfies a specified condition.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/list-contains-all-elements/'>List contains all elements</a>
*/
public class ListContainsAll {
class Camera {
String name;
int focalLength;
@Override
public String toString() {
return Objects.toStringHelper(this)
.add("name", name)
.add("focallength", focalLength)
.toString();
}
public Camera(String name, int focalLength) {
super();
this.name = name;
this.focalLength = focalLength;
}
}
List<Camera> cameras;
@Before
public void setUp () {
cameras = Lists.newArrayList();
cameras.add(new Camera("Nikon", 80));
cameras.add(new Camera("Cannon", 135));
cameras.add(new Camera("Kodak", 300));
cameras.add(new Camera("Olympus", 200));
cameras.add(new Camera("Fujifilm", 600));
}
@Test
public void list_contains_all_java () {
boolean allCamerasOfMediumTelephoto = true;
for (Camera camera : cameras) {
if (camera.focalLength < 80) {
allCamerasOfMediumTelephoto = false;
break;
}
}
assertTrue(allCamerasOfMediumTelephoto);
}
@Test
public void list_contains_all_java8_lambda () {
boolean allCamerasOfMediumTelephoto =
cameras.stream().allMatch(p -> p.focalLength >= 80);
assertTrue(allCamerasOfMediumTelephoto);
}
@Test
public void list_contains_all_guava () {
boolean allCamerasOfMediumTelephoto = Iterables.all(cameras, new Predicate<Camera>() {
public boolean apply(Camera input) {
return input.focalLength >= 80;
}
});
assertTrue(allCamerasOfMediumTelephoto);
}
@Test
public void list_contains_all_apache () {
@SuppressWarnings("unchecked")
Collection<Camera> mediumTelephotoCameras = CollectionUtils.select(cameras,
new org.apache.commons.collections.Predicate() {
public boolean evaluate(Object object) {
Camera camera = (Camera) object;
return camera.focalLength >= 80;
}
});
assertTrue(mediumTelephotoCameras.size() == cameras.size());
}
}