使用Lambda优化代码,Lambda表达式之美

一、优化线程

//JDK1.7及以前创建
Thread thread = new Thread(
    new Runnable() {
        @Override
        public void run() {
            System.out.println("原始线程");
        }
    }
);
//JDK1.8之后 Lambda创建
Thread thread2 = new Thread(() -> {
    System.out.println("Lambda创建线程");
});

二、优化集合操作

Lambda里面的核心就是 () -> 这个操作,那么具体是什么意思,我们看看操作集合的例子

List<String> list = new ArrayList<>();
list.add("A1");list.add("A2");list.add("Z1");
list.add("Z2");list.add("B1");list.add("B2");
List<String> result = new ArrayList<>();
/**
 * .stream对集合的操作
 * .filter()过滤
 * (x) -> 代表集合中的对象(集合中的对象,实体类则会附带一些方法)
 * !x.contains("Z") 是需要过滤的表达式,这里相当于  "if ()" 括号中的内容
 * .collect(Collectors.toList()); 将返回的结果集转换成List
 * */
result  = list.stream().filter(
        (x)-> !x.contains("Z")
).collect(Collectors.toList());
// 结果集:[A1, A2, B1, B2]
System.out.println(result.toString());

由此可知, ()-> 则是操作内容中的一个对象

当然你还可以使用另外一种语法遍历集合

result.forEach(System.out::println);

结果是,非常简洁

三、函数式接口

首先是一个砖(Brick)接口,有一个搬(move)方法,需要一个类型(type)指定砖的类型

然后定义一个工人(Worker)类,有个工作(Work)方法,传入一个砖(Brick),至于类型并不是自己能决定,需要交给老板决定,方法进行 搬砖: 然后执行搬砖方法 然后搬完了

最后来一个老板(main)开始指定一个工人(Worker worker = new Worker();)

然后通过worker.work((type)-> System.out.println("红  " + type)); 让工人搬红砖。

通过该结构很清晰的反应了一个由老板自由分配工人搬什么砖的列子,同时程序接口也很清晰,这就是表达式之美!!

interface Brick {
    void move(String type);
}
class Worker{
    public void work(Brick brick){
        System.out.println("搬砖:");
        brick.move("砖");
        System.out.println("搬完了!");
    }
    public static void main(String[] args) {
        Worker worker = new Worker();
        //工人开始干活 (砖) -> 要搬 (红)砖
        worker.work((type)-> System.out.println("红  " + type));
        worker.work((type)-> System.out.println("瓷  " + type));
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值