使用Lamada表达式 更加简洁 直观;
interface judgeOne{ public boolean judge(Apple apple); } class Appleselecter{ //行为参数化 public List<Apple> getAppleList(List<Apple> list,judgeOne filter){ List<Apple>result =new ArrayList<Apple>(); for(Apple apple: list){ if(filter.judge(apple)){ result.add(apple); } } return result; } } public class Main { public static void main(String[] args) { Apple apple1=new Apple(1,"white"); Apple apple2=new Apple(2,"white"); Apple apple3=new Apple(3,"white"); Apple apple4=new Apple(1,"black"); List<Apple> apples =new ArrayList<>(); apples.add(apple1); apples.add(apple2); apples.add(apple3); apples.add(apple4); Appleselecter selector =new Appleselecter(); //使用Lamada表达式 挑选出白色的苹果数量 int a=selector.getAppleList(apples,(Apple apple) -> apple.getColor().equals("white")).size(); //使用匿名内部类 挑选出重量大于等于1的苹果数量 int b=selector.getAppleList(apples, new judgeOne() { @Override public boolean judge(Apple apple) { if(apple.getWeight()>=1) { return true; } else { return false; } } }).size(); } }