企业网站推广排名,技术网,企业网站推广解决方案,wordpress如何汉化版案例描述 今天跟着黑马程序员的视频#xff0c;完成“瑞吉外卖”项目的菜品信息管理模块的时候#xff0c;遇到了一个比较陌生的写法 用到了Java8的新特性 stream().map((item) - {}).collect() ListDishDto collect records.stream().map((item) - {DishDt… 案例描述 今天跟着黑马程序员的视频完成“瑞吉外卖”项目的菜品信息管理模块的时候遇到了一个比较陌生的写法 用到了Java8的新特性 stream().map((item) - {}).collect() ListDishDto collect records.stream().map((item) - { DishDto dishDto new DishDto();BeanUtils.copyProperties(item,dishDto); Long categoryId item.getCategoryId(); Category category categoryMapper.selectById(categoryId); if (category ! null) { String categoryName category.getName();dishDto.setCategoryName(categoryName);} return dishDto;}).collect(Collectors.toList()); 等价写法 ListDishDto collect new ArrayList();for (int i 0; i records.size(); i) { DishDto dishDto new DishDto();BeanUtils.copyProperties(records.get(i),dishDto); Long categoryId records.get(i).getCategoryId(); Category category categoryMapper.selectById(categoryId); if (category ! null) { String categoryName category.getName();dishDto.setCategoryName(categoryName);}collect.add(dishDto);}dishDtoPage.setRecords(collect); 其实说白了我们就是要干一件事就是把records这个数组遍历一下把 records 里面的属性字段赋值给dishDto 并且添加一些“内容”。 stream().map().collect() 抽离出本质 mylist.stream().map((item)-{ return item;}).collect(Collectors.toList()); steam() 无存储。stream不是一种数据结构它只是某种数据源的一个视图数据源可以是一个数组Java容器或I/O channel等。 为函数式编程而生。对stream的任何修改都不会修改背后的数据源比如对stream执行过滤操作并不会删除被过滤的元素而是会产生一个不包含被过滤元素的新stream。 惰式执行。stream上的操作并不会立即执行只有等到用户真正需要结果的时候才会执行。 可消费性。stream只能被“消费”一次一旦遍历过就会失效就像容器的迭代器那样想要再次遍历必须重新生成。 map() map 方法用于映射每个元素到对应的结果 ListInteger numbers Arrays.asList(3, 2, 2, 3, 7, 3, 5);ListInteger squares numbers.stream().map((i) - { i i*i; return i; }).distinct().collect(Collectors.toList());System.out.println(squares);// [9, 4, 49, 25] 简洁一点可以这样子省略掉 ()-{} ListInteger numbers Arrays.asList(3, 2, 2, 3, 7, 3, 5);ListInteger squares numbers.stream().map( i - i*i).distinct().collect(Collectors.toList());System.out.println(squares); 如果不理解我们可以再看一个例子 filter() filter 方法用于通过设置的条件过滤出元素 ListStringstrings Arrays.asList(abc, , bc, efg, abcd,, jkl);// 获取空字符串的数量long count strings.stream().filter(string - string.isEmpty()).count();// 2System.out.println(count); 更多的例子在菜鸟里面都有就不搬了...... Java 8 Stream | 菜鸟教程 (runoob.com)https://www.runoob.com/java/java8-streams.html .collect(Collectors.toList()) 将流中的所有元素导出到一个列表( List )中 StreamString s Stream.of(Geeks,for,GeeksforGeeks,Geeks Classes); ListString myList s.collect(Collectors.toList()); // [Geeks, for, GeeksforGeeks, Geeks Classes]System.out.println(myList);