package stream;
import entity.Author;
import entity.Book;
import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
public class StreamDem01 {
public static void main(String[] args) {
//打印所有姓名长度大于1的作家
//test01();
//打印所有作家的名字
//test02();
//去除重复作家名称
//test03();
//对流中的元素按照年龄进行降序排列,并且要求不能有重复元素
//test04();
//对流中的元素按照年龄进行降序排列,并且要求不能有重复元素,然后打印其中年龄最大的两个作家的姓名
//test05();
//打印除了年龄最大的作家外的其他作家,要求不能有重复元素,并且按照年龄降序排列
//test06();
//打印所有书籍的名字,要求对重复元素进行去重操作
//test07();
//打印现有数据的所有分类,要求对分类进行去重,不能出现格式:哲学,爱情
//test08();
//打印这些作家的所出书籍的数目,注意删除重复元素
//test09();
//分别获取这些作家所出书籍的最高分和最低分并打印
//test10();
//获取一个存放所有作者名字的List集合
//test11();
//判断是否有年龄在29以上的作家
//test12();
//获取任意一个大于18的作家,如果存在就输出他的名字
//test13();
//获取一个年龄最小的作家,并输出他的姓名
//test14();
//使用reduce求所有作者年龄的和
//test15();
test16();
}
public static void test01(){
List<Author> authors = getAuthors();
//打印所有姓名长度大于1的作家
authors.stream()
.filter(name->name.getName().length()>1)
.forEach(name->System.out.println(name));
}
public static void test02(){
List<Author> authors = getAuthors();
//打印所有作家的名字
authors.stream()
.distinct()
.map(author -> author.getName())
.forEach(name-> System.out.println(name));
}
public static void test03(){
List<Author> authors = getAuthors();
//去除重复作家名称
authors.stream()
.distinct()
.map(Author::getName)
.forEach(System.out::println);
}
public static void test04(){
List<Author> authors = getAuthors();
//对流中的元素按照年龄进行降序排列,并且要求不能有重复元素
// authors.stream()
// .distinct()
// .sorted(new Comparator<Author>() {
// @Override
// public int compare(Author o1, Author o2) {
// return o2.getAge()-o1.getAge();
// }
// })
// .map(author -> author.getAge())
// .forEach(System.out::println);
authors.stream()
.distinct()
.sorted()
.map(author -> author.getAge())
.forEach(System.out::println);
}
public static void test05(){
List<Author> authors = getAuthors();
//对流中的元素按照年龄进行降序排列,并且要求不能有重复元素,然后打印其中年龄最大的两个作家的姓名
authors.stream()
.sorted()
.distinct()
.limit(2)
.map(author -> author.getName())
.forEach(System.out::println);
}
public static void test06(){
List<Author> authors = getAuthors();
//打印除了年龄最大的作家外的其他作家,要求不能有重复元素,并且按照年龄降序排列
authors.stream()
.sorted((o1, o2) -> o2.getAge()-o1.getAge())
.distinct()
.skip(1)
.map(author -> author.getAge())
.forEach(System.out::println);
}
public static void test07(){
List<Author> authors = getAuthors();
//打印所有书籍的名字,要求对重复元素进行去重操作
authors.stream()
.flatMap(author -> author.getBooks().stream())
.distinct()
.forEach(System.out::println);
}
public static void test08(){
List<Author> authors = getAuthors();
//打印现有数据的所有分类,要求对分类进行去重,不能出现格式:哲学,爱情
authors.stream()
.flatMap(author -> author.getBooks().stream())
//.distinct()
.flatMap(book -> Arrays.stream(book.getCategory().split(",")))
.distinct()
.forEach(System.out::println);
}
public static void test09(){
List<Author> authors = getAuthors();
//打印这些作家的所出书籍的数目,注意删除重复元素
long count = authors.stream()
.flatMap(author -> author.getBooks().stream())
.distinct()
.count();
System.out.println(count);
}
public static void test10(){
List<Author> authors = getAuthors();
// //分别获取这些作家所出书籍的最高分和最低分并打印
// Optional<Integer> min = authors.stream()
// .flatMap(book -> book.getBooks().stream())
// .map(book -> book.getScore())
// .min(Comparator.comparingInt(o -> o));
// System.out.println(min.get());
Optional<Integer> max = authors.stream()
.flatMap(book -> book.getBooks().stream())
.map(book -> book.getScore())
.max((o1, o2) -> o1 - o2);
System.out.println(max.get());
}
public static void test11(){
List<Author> authors = getAuthors();
// //获取一个存放所有作者名字的List集合
// List<String> collect = authors.stream()
// .map(author -> author.getName())
// .distinct()
// .collect(Collectors.toList());
// System.out.println(collect.toString());
//获取一个所有书名的Set集合
// Set<String> bookNames = authors.stream()
// .flatMap(author -> author.getBooks().stream())
// .map(book -> book.getName()).distinct()
// .collect(Collectors.toSet());
// System.out.println(bookNames);
//获取一个map集合,map的key为作家名称,value为List<Book>
Map<String, List<Book>> collect = authors.stream()
.distinct()
.collect(Collectors.toMap(author -> author.getName(), author -> author.getBooks()));
List<Author> collect1 = authors.stream()
.distinct()
.collect(Collectors.toList());
for (Author col:collect1
) {
List<Book> books = collect.get(col.getName());
System.out.println(books);
}
}
public static void test12(){
List<Author> authors = getAuthors();
//判断是否有年龄在29以上的作家
boolean match = authors.stream()
.anyMatch(author -> author.getAge() > 29);
System.out.println(match);
}
public static void test13(){
List<Author> authors = getAuthors();
//获取任意一个大于18的作家,如果存在就输出他的名字
Optional<Author> optionalAuthor = authors.stream()
.filter(author -> author.getAge()>13)
.findAny();
optionalAuthor.ifPresent(author -> System.out.println(au
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
在这本《函数式编程教程代码示例》中,您将沉浸于函数式编程的世界,通过一系列精心挑选的代码片段来探索。这些示例展示了函数式编程范式的优雅和威力,是掌握这一变革性软件开发方法的指南。通过深入理解和实践这些示例,您将学会如何利用函数式编程的原则和技巧来构建高效、模块化的程序。这本教程不仅仅是一个代码示例集合,更是一段启发性的旅程,将带领您走向函数式编程的新境界。无论您是新手还是有经验的开发者,都能从中获益,并将函数式编程的优势应用到自己的项目中。让我们一起探索函数式编程的美妙世界吧!
资源推荐
资源详情
资源评论
收起资源包目录
函数式编程.zip (59个子文件)
函数式编程
out
production
lambda的用法
interfacecase
AA.class 443B
Flyable.class 132B
Operator.class 210B
optional
OptionalDemo01.class 3KB
generated
function
FunctionInterface.class 2KB
ConsumerAndThen.class 2KB
LambdaDemo02.class 1KB
UseStaticDemo01$A.class 461B
PredicateAnd.class 2KB
PredicateFunction.class 2KB
FunctionAndThen.class 3KB
SupplierFunction.class 2KB
Demo01User.class 899B
ConsumerFunction.class 2KB
UseStaticDemo01.class 523B
LambdaDemo01.class 1KB
PredicateNegate.class 2KB
Demo01User$1.class 1KB
UserDefaultDemo01.class 504B
entity
CC.class 585B
AA.class 1KB
BB.class 519B
Student.class 2KB
Author.class 4KB
Book.class 3KB
stream
StreamDem01$1.class 803B
StreamDem01.class 12KB
.idea
uiDesigner.xml 9KB
dbnavigator.xml 23KB
workspace.xml 6KB
misc.xml 177B
compiler.xml 254B
modules.xml 309B
.gitignore 184B
lambda的用法
src
interfacecase
Flyable.java 77B
Operator.java 109B
AA.java 176B
optional
OptionalDemo01.java 2KB
function
ConsumerFunction.java 631B
FunctionInterface.java 371B
Demo01User.java 696B
LambdaDemo02.java 301B
PredicateAnd.java 525B
PredicateNegate.java 474B
UseStaticDemo01.java 268B
ConsumerAndThen.java 442B
PredicateFunction.java 404B
LambdaDemo01.java 437B
UserDefaultDemo01.java 207B
FunctionAndThen.java 515B
SupplierFunction.java 560B
entity
Book.java 2KB
BB.java 201B
CC.java 257B
Student.java 1KB
AA.java 414B
Author.java 2KB
stream
StreamDem01.java 11KB
lambda的用法.iml 456B
共 59 条
- 1
资源评论
MidnightWhisper
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Java 多线程课程的代码及少量注释.zip
- 数据库课程设计-基于的个性化购物平台的建表语句.sql
- 数据库课程设计-基于的图书智能一体化管理系统的建表语句.sql
- Java 代码覆盖率库.zip
- Java 代码和算法的存储库 也为该存储库加注星标 .zip
- 免安装Windows10/Windows11系统截图工具,无需安装第三方截图工具 双击直接使用截图即可 是一款免费可靠的截图小工具哦~
- Libero Soc v11.9的安装以及证书的获取(2021新版).zip
- BouncyCastle.Cryptography.dll
- 5.1 孤立奇点(JD).ppt
- 基于51单片机的智能交通灯控制系统的设计与实现源码+报告(高分项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功