java基础——lambda表达式

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;
            }
        };
        //匿名类->lambda表达式详解(1.8)
        //把new HeroChecker,方法名,方法返回类型信息去掉
        //只保留方法参数和方法体
        //参数和方法体加上符号->
        HeroChecker c2 = (Hero h) -> {
            return h.hp > 100 && h.damage < 50;
        };
        
        //把return和{}去掉
        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);
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值