package com.softwaremill.common.util;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import java.util.ArrayList;
import java.util.List;
/**
* @author Adam Warski (adam at warski dot org)
*/
public class RichList<T> {
private final List<T> wrapped;
public RichList(List<T> wrapped) {
this.wrapped = wrapped;
}
public <U> List<U> flatMap(Function<T, List<U>> mappingFunction) {
List<U> result = new ArrayList<U>();
for (T element : wrapped) {
result.addAll(mappingFunction.apply(element));
}
return result;
}
public List<T> filter(Predicate<T> predicate) {
List<T> result = new ArrayList<T>();
for (T element : wrapped) {
if (predicate.apply(element)) {
result.add(element);
}
}
return result;
}
}