五 SpringBoot - Java8 新特性( 四 )

测试结果:

五 SpringBoot - Java8 新特性

文章插图
2.2.2 基于集合//基于集合List<String> nameList = Arrays.asList("Lilei","Hanmeinei","lisi","zhangsan","xiaolong","xiaohu");//通过集合对象的stream方法nameList.stream().map(name -> name.toLowerCase()).forEach(System.out::println);测试结果:
五 SpringBoot - Java8 新特性

文章插图
2.3 流的中间操作2.3.1 筛选和切片2.3.1.0 数据准备2.3.1.0.1bean//小说实体@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class Story {// 编号private Integer id;// 书名private String name;// 作者private String author;// 价格private Double price;// 章节private Integer sections;// 分类private String category;}2.3.1.0.2 StoryUtil//小说工具类public class StoryUtil {public static List<Story> stories = new ArrayList<>();static {stories.add(Story.builder().id(101).name("斗破苍穹").author("zhangsan").price(109.9).sections(1202).category("玄幻").build());stories.add(Story.builder().id(201).name("斗罗大陆").author("lisi").price(88.9).sections(999).category("科幻").build());stories.add(Story.builder().id(301).name("凡人修仙传").author("wangwu").price(77.9).sections(1303).category("武侠").build());stories.add(Story.builder().id(401).name("圣墟").author("zhuliu").price(121.9).sections(1404).category("玄幻").build());stories.add(Story.builder().id(501).name("吞噬星空").author("sunqi").price(135.9).sections(996).category("历史").build());stories.add(Story.builder().id(601).name("完美世界").author("zhaoba").price(66.9).sections(999).category("玄幻").build());stories.add(Story.builder().id(701).name("大王饶命").author("qianjiu").price(135.9).sections(997).category("玄幻").build());stories.add(Story.builder().id(801).name("大奉打更人").author("zhoushi").price(133.9).sections(1606).category("军事").build());}}2.3.1.1筛选:filter//筛选: filter,相当于数据库中的where条件log.info("-------------- 筛选: filter ----------------");//查看小说集合中,价格大于100块的所有小说StoryUtil.stories.stream().filter(story -> story.getPrice() > 100).forEach(System.out::println);//练习:查看小说集合中,所有章节数大于1000且作者中包含n的小说log.info("\n------- 查看小说集合中,所有章节数大于1000且作者中包含n的小说 ---------");StoryUtil.stories.stream().filter(story -> story.getSections() > 1000 && story.getAuthor().contains("n") ).forEach(System.out::println);测试结果1:
五 SpringBoot - Java8 新特性

文章插图
测试结果2:
五 SpringBoot - Java8 新特性

文章插图
2.3.1.2 截断:limit//截断: limit 相当于数据库的limit条数log.info("\n---------- 截断: limit ---------");//查询小说集合,所有价格大于100的前三本StoryUtil.stories.stream().filter(story -> story.getPrice() >100).limit(3).forEach(System.out::println);测试结果:
五 SpringBoot - Java8 新特性

文章插图
2.3.1.3 跳过:skip//跳过:skip,相当于数据库跳过数据条数log.info("\n------------- 跳过:skip-----------------");//查询小说集合,所有价格大于100的前三本,后的所有小说log.info("\n------------- 查询小说集合,所有价格大于100的前三本,后的所有小说-----------------");StoryUtil.stories.stream().filter(story -> story.getPrice() >100).skip(3).forEach(System.out::println);

经验总结扩展阅读