package com.levelup.java.collections; import static org.junit.Assert.assertTrue; 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 if a list containing any element. * * @author Justin Musgrove * @see <a href= * 'http://www.leveluplunch.com/java/examples/list-contains-any-elements/'>List * contains any element</a> */ public class ListContainsAny { class Vehicle { String manufacturer; String model; int year; public Vehicle(String manufacturer, String model, int year) { super(); this.manufacturer = manufacturer; this.model = model; this.year = year; } @Override public String toString() { return Objects.toStringHelper(this) .add("manufacturer", manufacturer).add("model", model) .add("year", year).toString(); } } List<Vehicle> vehicles; @Before public void setUp() { vehicles = Lists.newArrayList(); vehicles.add(new Vehicle("Dodge", "CHARGER", 1965)); vehicles.add(new Vehicle("Dodge", "VIPER CONVERTIBLE", 2006)); vehicles.add(new Vehicle("Oldsmobile", "BRAVADA", 2004)); vehicles.add(new Vehicle("GMC", "C1500 YUKON 2WD HYBRID", 2012)); vehicles.add(new Vehicle("GMC", "K1500 YUKON 4WD", 2013)); vehicles.add(new Vehicle("Chrysler", "PT Cruiser", 2006)); } @Test public void list_contains_any_java() { // assuming 2013 boolean vehiclesFiveYearOrOlder = false; for (Vehicle vehicle : vehicles) { if ((vehicle.year - 5) <= 2008) { vehiclesFiveYearOrOlder = true; break; } } assertTrue(vehiclesFiveYearOrOlder); } @Test public void list_contains_any_java8_lambda() { boolean vehiclesContainDodge = vehicles.stream().anyMatch( p -> p.manufacturer.equals("Dodge")); assertTrue(vehiclesContainDodge); } @Test public void list_contains_any_guava() { boolean vehiclesContainDodge = Iterables.any(vehicles, new Predicate<Vehicle>() { public boolean apply(Vehicle input) { return input.manufacturer.equals("Dodge"); } }); assertTrue(vehiclesContainDodge); } @Test public void list_contains_any_apache_commons() { boolean vehiclesContainYukon = CollectionUtils.exists(vehicles, new org.apache.commons.collections.Predicate() { public boolean evaluate(Object object) { Vehicle vehicle = (Vehicle) object; return vehicle.model.contains("YUKON"); } }); assertTrue(vehiclesContainYukon); } }