public class Test {
public static <T> List<T> filter(List<T> list, Predicate<T> p){
List<T> result = new ArrayList<T>();
for(T e: list){
if(p.test(e)){
result.add(e);
}
}
return result;
}
public static void main(String[] args) {
List<Apple> inventory = new ArrayList<Apple>();
inventory.add(new Apple("red",155));
inventory.add(new Apple("green",100));
List<Apple> redApples =
filter(inventory, (Apple apple) -> "red".equals(apple.getColor()));
// List<Integer> evenNumbers =
// filter(numbers, (Integer i) -> i % 2 == 0);
}
}
public class Apple {
private String color;
private Integer weight;
public Apple(String color,Integer weight){
this.color = color;
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Integer getWeight() {
return weight;
}
public void setWeight(Integer weight) {
this.weight = weight;
}
}
public interface Predicate <T>{
boolean test(T t);
}
如果idea报错:
lambda expressions are not supported at this language level
那么解决方式: