Java--Stream流

什么是Stream流?

Stream(流)是一个来自数据源的元素队列,元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源:流的来源,可以是集合,数组等
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。

优点

Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

Stream流

Stream的目的: 用于简化集合和数组操作的API
Stream流的思想核心: 流水线, 不是IO操作
Stream使用步骤:

  • 得到集合/数组Stream流对象
  • 把元素放上去(创建Stream对象)
  • 调用Stream类相关API进行数据加工处理

在这里插入图片描述
Stream流的三类方法:

  1. 获取Stream流
    创建一条流水线,并把数据放到流水线上准备进行操作
  2. 中间方法
    流水线上的操作。一次操作完毕之后,还可以继续进行其他操作。
  3. 终结方法
    一个Stream流只能有一个终结方法,是流水线上的最后一个操作

获取Stream流

  1. Collection集合得到Stream流
List<String> list1 = new ArrayList<>();
list1.add("abc");
list1.add("bbb");
list1.add("ccc");
list1.add("abc");

//得到Stream对象
Stream<String> stream = list1.stream();
//System.out.println(stream);

//Set集合
Set<String> set = new HashSet<>();
set.add("abc");
set.add("bbb");
set.add("ccc");
set.add("abc");
Stream<String> stream1 = set.stream();

//Map集合
Map<String,Integer> map = new HashMap<>();
map.put("abc",123);
map.put("bcd",345);

//得到key集合的stream
Stream<String> stream2 = map.keySet().stream();

//得到Entry的stream
Stream<Map.Entry<String, Integer>> stream3 = map.entrySet().stream();

2.数组得到Stream对象

  • Stream.of() 得到
  //数组的stream对象
Stream<Integer> stream4 = Stream.of(1, 2, 3, 4, 5, 6);

Integer[] arr = {2,4,6,8,10};
Stream<Integer> stream5 = Stream.of(arr);

Stream常用方法

在这里插入图片描述

Stream流的收集

 public static <T> Collector<T, ?, List<T>> toList():转换为List集合
 public static <T> Collector<T, ?, Set<T>> toSet() :转换为Set集合
List<String> list1 = new ArrayList<>();
list1.add("abc");
list1.add("bbb");
list1.add("ccc");
list1.add("abc");

//得到Stream对象
Stream<String> stream = list1.stream()
        .distinct()//去重
        .collect(Collectors.toList());
System.out.println(list);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值