Lambda表达式

83 阅读1分钟

1 概述

简单地说,一些参数,一个箭头,一段代码

	() -> {}    
  • () 用来描述参数列表
  • {} 用来描述方法体
  • -> 为 lambda运算符

2 示例

1 排序

	Book[] books = {new Book("西游记",100,2000),
                        new Book("东游记",50,2020),
                        new Book("南游记",200,1990),
                        new Book("北游记",150,2010)};
    // lambda表达式用于排序
	Arrays.sort(books,(o1,o2) -> o1.getPrice()-o2.getPrice());

输出

  此书名字:东游记, 价格:50, 出版年份:2020年
  此书名字:西游记, 价格:100, 出版年份:2000年
  此书名字:北游记, 价格:150, 出版年份:2010年
  此书名字:南游记, 价格:200, 出版年份:1990年

2 启动线程

new Thread( () -> System.out.println(Thread.currentThread().getName()),
                "线程1").start();
new Thread( () -> System.out.println(Thread.currentThread().getName()),
                "线程2").start();
new Thread( () -> System.out.println(Thread.currentThread().getName()),
                "线程3").start();

输出

  线程1
  线程2
  线程3

3 综合应用

List<Book> booklist = Arrays.asList(
                new Book("西游记", 100, 2020),
                new Book("东游记", 50, 2000),
                new Book("南游记", 50, 2010),
                new Book("西厢记", 200, 1990),
                new Book("西土大唐", 150, 2010));

booklist.stream().filter(book -> book.getName().contains("西"))
                .sorted((o1,o2) -> o1.getYear()-o2.getYear())
                .forEach(System.out::println);

模糊搜索包含‘西’子的书,并按年份降序打印,输出

  此书名字:西厢记, 价格:200, 出版年份:1990年
  此书名字:西土大唐, 价格:150, 出版年份:2010年
  此书名字:西游记, 价格:100, 出版年份:2020年