流编程
【摘要】 * 流的简介 * * 从支持数据处理操作的源生成的元素序列。 * ---Java8实战 * * 数据源 中间操作 终端操作 * * * 流是什么 * * * 1、JDK1.8引入的新成员,以声明式方式处理...
* 流的简介
*
* 从支持数据处理操作的源生成的元素序列。
* ---Java8实战
*
* 数据源 中间操作 终端操作
*
*
* 流是什么
*
*
* 1、JDK1.8引入的新成员,以声明式方式处理集合数据
* 2、将基础的操作链接起来,完成复杂的数据处理流水线
* 3、提供透明的并行处理
*
* 流与集合的区别
*
* 时间和空间
* 只能遍历一次
* 外部迭代和内部迭代
*
*
* 流的分类:
*
*
* 中间操作 无状态操作 filter/map/peek
* 有状态操作 dictinct sorted limit
*
* 终端操作 非短路操作 forEach collect count
* 短路操作 anyMatch findFirst findAny
*
*
*
* 流的使用
*
* 中间操作(无状态) 中间操作(有状态) 终端操作(短路) 终端操作(非短路)
* 过滤(filter) 去重(distinct) 所有匹配(allMatch) 遍历(forEach)
* 映射(map) 跳过(skip) 任意匹配(anyMatch) 归约(reduce)
* 扁平化(flatMap) 截断(limit) 不匹配(noneMatch) 最大值(max)
* 遍历(peek) 排序(sorted) 查找首个(findFirst) 聚合(collect)
* 查找任意(findAny) 最小值(min)
* 计数(count)
*
/**
* filter使用:过滤掉不符合断言判断的依据
* @param args
*/
public void a(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.filter(a -> SkuCategoryEnum.BOOKS.equals(a.getSkuGategory()))
//.forEach(System.out::println);
.forEach(b -> System.out.println(JSON.toJSONString(b,true)));
}
/**
* map使用:将一个元素转换成另一个元素
* @param args
*/
public void b(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.map(a -> a.getSkuName())
//.forEach(System.out::println);
.forEach(b -> System.out.println(JSON.toJSONString(b,true)));
}
/**
* flatMap将一个对象转换成流
* @param args
*/
public void faltmap(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.flatMap(a -> Arrays.stream(a.getSkuName().split("")))
.forEach(System.out::println);
//.forEach(b -> System.out.println(JSON.toJSONString(b,true)));
}
public void peek(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.peek(a -> System.out.println(a.getSkuName()))
// .flatMap(a -> Arrays.stream(a.getSkuName().split("")))
.forEach(System.out::println);
}
/**
* sort:对流中元素进行排序,可选择自然排序或制定排序规则
* @param args
*/
public void sorted(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.sorted(Comparator.comparing(Sku::getTotalPrice))
.forEach(System.out::println);
}
public void distinct(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.map(sku ->sku.getSkuGategory())
.distinct()
.forEach(System.out::println);
}
public void skip(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.sorted(Comparator.comparing(Sku::getTotalPrice))
.skip(3)
.forEach(System.out::println);
}
public static void main(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.sorted(Comparator.comparing(Sku::getTotalPrice))
.limit(3)
.forEach(System.out::println);
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)