java8 lambda demo

前置对象

@Data
public class Book {
    // 书名
    private String name; 
    // 页数
    private int pages;
    // 作者
    private String auther;
    // 总字数
    private int wordCounts;
    // 版次日期
    private Date publishDate;
    
}

有效的lambda表达式

// 参数类型String,返回类型int
(String s) -> s.length();
// 无返回值
(Book b) -> System.out.println(b);
// 无参数,返回Book对象
() -> {
    return new Book();
};

demo

Runnable接口实现

Book book = new Book("三体", 123, "刘慈欣", 66666);
new Thread(
    () -> System.out.println(book.toString())
).start();

遍历

bookList.forEach(book -> System.out.println(book));
bookList.forEach(System.out::println);

排序

List<Book> bookList = new ArrayList<>();
// 按页数排序
bookList.sort((b1, b2) -> b1.getPages() - b2.getPages());
bookList.sort(Comparator.comparing(Book::getPages));

Predicate

java.util.function.Predicate接口定义了一个名叫test的抽象方法,它接受泛型
T对象,并返回一个boolean。

// Predicate 接受T类型,返回boolean
Predicate<String> predicate = (s) -> s != null;
// 可以进行and操作,相当于 &&
predicate.and(s -> s.length() > 0);
// or 操作,相当于 ||
predicate.or(s -> s.isEmpty());
// negate 操作,相当于 !
predicate.negate();

Consumer

java.util.function.Consumer定义了一个名叫accept的抽象方法,它接受泛型T
的对象,无返回类型。

Consumer<Book> consumer = b -> {
    if (b.getPages() > 100) {
        System.out.println(b.getName() + " pages > 100");
    }
};
bookList.forEach(consumer);

Supplier

java.util.function.Supplier定义了一个名叫get的抽象无参方法,返回T类型对象。

Supplier<Book> supplier1 = Book::new;
Supplier<Book> supplier2 = () -> new Book();

Function

java.util.function.Function<T, R>接口定义了一个叫作apply的方法,它接受一个
泛型T的对象,并返回一个泛型R的对象。

Function<Book, String> function = book -> book.getName();

BiFunction,BiPredicate,BiConsumer

与前面不同的是,函数入参为两个变量。

Int* , Double* , Long*

分别以原始类型作为入参和出参

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值