package lambda;
import character.Hero;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class TestLambda {
public static void main(String[] args){
Random r = new Random();
List<Hero> heros = new ArrayList<>();
for(int i=0;i<10;i++){
heros.add(new Hero("hero-"+i,r.nextInt(200),r.nextInt(100)));
}
System.out.println("初始化的集合:");
System.out.println(heros);
System.out.println("通过筛选后的集合(1):");
filter(heros);
System.out.println("通过匿名内部内,筛选:");
HeroChecker hc = new HeroChecker() {
@Override
public boolean test(Hero h) {
return h.hp>100&&h.damage<50;
}
};
HeroChecker c2 = (Hero h) -> {
return h.hp > 100 && h.damage < 50;
};
HeroChecker c3 = (Hero h)->h.hp>100&&h.damage<50;
HeroChecker c4 = h->h.hp>100&&h.damage<50;
filter(heros,hc);
System.out.println("通过lambda方式,筛选:");
filter(heros,h->h.hp>100&&h.damage<50);
}
private static void filter(List<Hero> heros){
for(Hero h:heros){
if(h.hp>100&&h.damage<50){
System.out.println(h);
}
}
}
private static void filter(List<Hero> heros,HeroChecker hc){
for(Hero h:heros){
if(hc.test(h)){
System.out.println(h);
}
}
}
}