Java jdk1.8 Stream流式处理

package com.htf;

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

/**
 * @author htf
 * @description:  流式处理
 */
public class Test {
    public static void main(String[] args) {
        /**
         * jdk1.8流处理
         *获取stream的方式
         *
         *   我们在用strema流时,首先是通过:集合.stream()方法获取到了集合流,从而调用java为我们提供Strema接口中的方法,那么我们要想使用stream流,就必须先获取,关于获取stream流的方式则有以下两种。
         *
         *   一、集合Collection:直接.stream():
         *
         *   二、集合Map:使用间接方法entrySet、keySet、values,在.stream()方法,注:Map并不是Collection字接口,所以不能像Collection集合那样直接.stream()方式获取
         *
         *   三、数组:Arrays.stream方法、或者是Stream.of方法
         */

        /**
         *    stream 常用方法
         *  1、条件过滤:filter
         *
         *   2、统计个数:count
         *
         *   3、截取集合中的前几个元素:limit
         *
         *   4、抛弃集合中的前几个元素:skip
         *
         *   5、合并集合:concat
         *
         *   6、消费集合中的元素:forEach,注:forEach并不是for循环
         */

        /**
         * 一、集合Collection:直接.stream():
         */
        System.out.println("======集合Collection======");
        List<String> list=new ArrayList<>();
        list.add("蔡徐坤");
        list.add("吴亦凡");
        list.add("罗志祥");
        list.add("吴亦凡1号");
        list.add("陈陈");

        //1、条件过滤:filter    需要获取list集合字符长度是三且不为空的字符串并且打印
        System.out.println("======filter==3====");
        list.stream().filter(s ->  s!=null && s.length()==3).forEach(System.out::println);
        //1、条件过滤:filter    需要获取list集合字符长度是二且不为空的字符串并且打印
        System.out.println("======filter==2====");
        list.stream().filter(s -> s !=null).filter(s -> s.length()==2).forEach(System.out::println);
        //2、统计个数:count
        System.out.println("=======count=======");
        System.out.println(list.stream().count());

        // 3、截取集合中的前几个元素:limit
        System.out.println("======limit=======");
        list.stream().limit(2).forEach(System.out::println);

        // 4、抛弃集合中的前几个元素:skip
        System.out.println("======skip=======");
        list.stream().skip(2).forEach(System.out::println);

        //5、合并集合:concat
        System.out.println("======concat=======");
        List<String> list1=new ArrayList<>();
        list1.add("蔡文姬");
        list1.add("曹操");
        list1.add("貂蝉");
        Stream.concat(list.stream(),list1.stream()).forEach(System.out::println);

        /**
         * 二、集合Map:使用间接方法entrySet、keySet、values,
         *  在.stream()方法,注:Map并不是Collection字接口,
         *  所以不能像Collection集合那样直接.stream()方式获取
         */
        System.out.println("======集合Map=======");
        Map<Integer, String> map=new HashMap<>();
        map.put(1, "德玛");
        map.put(2, "皇子");
        map.put(3, "赵信");
        map.put(4, "德玛西亚");

        Stream<Integer> streamMap1=map.keySet().stream();
        Stream<String> streamMap2=map.values().stream();
        Stream<Map.Entry<Integer,String>> mapStream=map.entrySet().stream();


        mapStream.forEach(System.out::println);


        /**
         * 三、数组:Arrays.stream方法、或者是Stream.of方法
         */
        System.out.println("======Arrays.stream方法======");
        String[] array = {"蛮王","剑圣", "赵信"};

        Stream<String> streamArray= Arrays.stream(array);
        Stream<String> streamArray1=Stream.of(array);
        streamArray1.filter(s -> s !=null).filter(s -> s.length()==2).forEach(System.out::println);

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值