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());
相关推荐
wuminyu1 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
m0_380743871 小时前
C++中的freopen的用法实例详解
开发语言·c++
Escalating_xu2 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
jimy12 小时前
polymorph.cpp里面的“析构函数、智能指针”问题
开发语言·c++
m0_380743872 小时前
PHP 8.3 缓存清除不生效怎么排查
开发语言·php
朝朝辞暮i2 小时前
C++ 第 6 课:switch —— 多状态选择
开发语言·c++·算法
小凡geo3 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
朝朝辞暮i3 小时前
C++ 第 4 课:if / else —— 让程序自己做决定
开发语言·c++
波力海苔夹心脆6753 小时前
C# 值类型与引用类型详解:存储位置、赋值机制、参数传递、相等比较、装箱拆箱与常见陷阱
开发语言·jvm·经验分享·笔记·c#·.net
蜗牛互联网3 小时前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端