Java之Stream的实用语法

1. 转Map

java 复制代码
List<Book> books = bookMapper.list();
Map<String, Book> bookMap = books.stream().collect(Collectors.toMap(Book::getBookId, book -> book));

结果结构

json 复制代码
{
    "1": {
        "bookId": "1",
        "bookTitle": "书1"
    },
    "2": {
        "bookId": "2",
        "bookTitle": "书2"
    },
}

2. 字符串拼接

java 复制代码
List<Book> books = bookMapper.list();
String bookNames = books.stream().map(Book::getBookTitle).collect(Collectors.joining(","));

结果结构

json 复制代码
"书1,书2"

3. 类型转换

java 复制代码
List<Book> books = bookMapper.list();
List<Book2> book2s = books.stream().map(book -> {
    Book2 book2 = new Book2();
    BeanUtils.copyProperties(book, book2);
}).collect(Collectors.toList());

4. 条件判断(存在任意匹配的)

java 复制代码
List<Book> books = bookMapper.list();
if (books.stream().anyMatch(book -> !book.getBookTitle.contains("书"))) {
    throw new RuntimeException("存在非正常书名称");
} else {
    return books;
}

5. 条件判断(无匹配的)

java 复制代码
List<Book> books = bookMapper.list();
if (books.stream().noneMatch(book -> "1".equals(book.getType()))) {
    throw new RuntimeException("无指定类型的书籍");
}

6. 修改数据项

java 复制代码
List<Book> books = bookMapper.list();
return books.stream().peek(book -> book.setBookTitle(null)).collect(Collectors.toList());

7. 过滤

java 复制代码
List<Book> books = bookMapper.list();
return books.stream().filter(book -> "1".equals(book.getType())).collect(Collectors.toList());

8. 排序

java 复制代码
List<Book> books = bookMapper.list();
return books.stream().sorted(Comparator.comparing(Book::getCreateTime)).collect(Collectors.toList());
相关推荐
你怎么知道我是队长1 分钟前
JavaScript 事件介绍
开发语言·前端·javascript
CodeStats6 分钟前
【Linux IO】从文件描述符到硬件中断:Linux IO 系统底层完全拆解
java·linux·开发语言·io·socket
大阿明11 分钟前
C++智能指针与RAII机制精讲:彻底根治内存泄漏与野指针
java·jvm·c++
一生了无挂14 分钟前
C++面向对象核心精讲:类、对象、封装、权限与生命周期全解析
java·jvm·c++
她说..17 分钟前
Apache Commons Lang3 Pair 完整版实战详解
java·spring·java-ee·apache·springboot
着迷不白25 分钟前
Linux系统故障修复、日志管理与安全加固实战指南
开发语言·php
砍材农夫25 分钟前
redis|spring-boot redis geo|附近定位功能
java·spring boot·redis
贺国亚35 分钟前
A2A协议与Agent互操作-Task生命周期
开发语言·qt
满怀冰雪44 分钟前
第29篇-状态压缩DP-当状态很多时如何降维优化
java·算法·动态规划
weixin_446729161 小时前
javaweb--文件上传
java