关于Stream流的使用

概述

Stream流是为了简化常规集合的操作。
流相当于“流水线”。

代码演示


```java
package com.heima.stream;

import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        //获取集合的流
        ArrayList<String> list = new ArrayList<>();
        Stream<String> stream = list.stream();

        //获取set的流
        HashSet<String> set = new HashSet<>();
        Stream<String> stream1 = set.stream();

        //获取数组的流,使用Stream.of方法,传入参数为包装类型数组
        Integer[] arr = {11,22,33,44};
        Stream<Integer> arr1 = Stream.of(arr);

        //获取map的流,分别获取键的流和值的流
        HashMap<String, Integer> map = new HashMap<>();
        Set<String> strings = map.keySet();
        Stream<String> stringStream = strings.stream();

        Collection<Integer> values = map.values();
        Stream<Integer> valuesStream = values.stream();

        //给集合加点数据
        Collections.addAll(list,"abc","def","qwer","asd","123");

        //以下演示均以集合list的流stream作为演示
        //终结方法只能使用一次就会关流,同一个流使用时注释其他带有终结方法的语句

        //终结方法forEach:逐一遍历并打印
        stream.forEach(System.out::println);

        //终结方法count:统计个数
        System.out.println(stream.count());

        //filter筛选,留下包含a的字符串,filter需要一个Predicate函数接口类型的对象作为参数
        stream.filter(new Predicate<String>() {
            //使用匿名内部类
            @Override
            public boolean test(String s) {
                return s.contains("a");
            }
        }).forEach(System.out::println);
        //结果:abc asd

        //limit():取用前几个
        stream.limit(3).forEach(System.out::println);
        //结果:"abc","def","qwer"

        //skip():跳过前几个
        stream.skip(2).forEach((s)-> System.out.println());
        //结果:"qwer","asd","123"

        //map(): 映射方法(把元素进行转换)
        //把流中的元素从【字符串】转成【字符串对应的长度】
        stream.map(s->s.length()).forEach(s-> System.out.println(s));
        //结果:3,3,4,3,3

        //static concat():组合(把两个流拼接成一个流),静态方法直接使用类名调用方法
        //截取原有的stream作为两个新流
        Stream<String> s1 =list.stream().skip(3);
        Stream<String> s2 =list.stream().limit(2);
        //组合两个新流并打印
        Stream.concat(s1, s2).forEach(s-> System.out.println(s));
        //结果:"asd","123","abc","def"
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值