Stream流

一、什么是Stream流

用于简化集合和数组,引入lambda表达式,带来函数式编程。

String的体验:

public class Demo{
        public static void main(String[] args){
            List<String> list = new ArrayList<>();
            list.add("小白");
            list.add("小黑");
            list.add("大黄");
            list.add("小兰");
    // 把集合中所有以”张“开头的元素存储到一个新的集合。
    //把张开头的集合中的长度为3的元素存储到一个新的集合
    //遍历上一步得到的集合中的元素
    //使用Stream
//第一种
    list.stream().filter(new Predicate<String>(){
        @Override
        public boolean test(String s){
            return s.startWith("小");
        }
    }).forEach(s-> System.out.println(s));
//第二种
 list.stream().filter(s->s.startsWith("小")).filter(s->s.length()==3).forEach(s->System.out.println(s));)
    }
}
//其中filter()是从对象集合中过滤出某些元素

Stream的核心思想:

1.先得到集合或者数组的Stream流对象

2.将元素放进去

3.然后用Stream流简化的API来操作元素

二、Stream流的获取

Stream流的三类方法

  • 获取Stream流

  • 中间方法

  • 终结方法

获取Stream流的方式:

通过Collection接口中的默认方法

default Stream<E>

stream( )

返回以此集合为源的顺序stream

通过Arrays(数组)工具类中提供的方法
Map集合 间接的通过keySet 或者 entitySet
Collection<String> c = new ArryList<>();
Stream<String> s = c.stream();
Map<String,Integer> map = new HashMap<>();
//键的stream流
Stream<String> keyStream = map.keySet().stream();
//值的stream流
Stream<Integer> valStream = map.valSet().stream();
//键值对流
Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream();
String[] names = {"小白","小黑"};
Stream<String> arrStream = Arrays.stream(names);
Stream<String> arrStream2 = Stream.of(names);

中间方法

中间方法又称 非终结方法,调用完之后,返回新的stream可以继续使用,支持链式编程

在使用Stream流的过程中,无法直接修改集合、数组中的元素

Stream流常用的API

终结方法

终结方法调用完之后无法继续使用,原因在于返回的不是stream流了

三、收集Stream流

作用:将Stream流操作后的结果转会到集合或者数组中去

Stream流的收集方法:

Collectors工具类提供的收集方法

收集Stream流:

List<String> list = new ArrayList<>();
    list.add("小白");
    list.add("小白");
    list.add("小黑");
    list.add("大黄");
    list.add("小兰");
    Stream<String> s1 = list.stream().filter((s->s.startWith("小")));
    //将处理后的流收集成一个集合
    List<String> xiaoList = s1.collect(Collectors.toList());//可变集合
     xiaoList。add("java");
       System.out.println(xiaoList);
      //注意 “流只能使用一次”
    Stream<String> s2 = list.stream().filter((s->s.startsWith("小")));
    Set<String > xiaoSet = s2.collect(Collectors.toSet());
    System.out.println(xiaoSet);
// object[] arr = s2.toArray();
// System.out.pritln(arr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值