Stream流的简单入门

Stream流的简单入门

/**
* 创建添加集合元素,完成以下需求:
* 1. 把所有以’张’开头的集合元素存储到新集合中
* 2. 把’张’开头,长度为3的元素存储到新集合中
* 3. 遍历打印最终结果
*/

import java.util.ArrayList;

public class Demo1 {
    public static void main(String[] args) {
        /**
         * 创建添加集合元素,完成以下需求:
         * 1. 把所有以'张'开头的集合元素存储到新集合中
         * 2. 把'张'开头,长度为3的元素存储到新集合中
         * 3. 遍历打印最终结果
         */
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("张三丰");
        list.add("王五");
        list.add("张无忌");

        // 方法一
        //1. 把所有以'张'开头的集合元素存储到新集合中
        ArrayList<String> list1 = new ArrayList<>();
        for (String name : list) {
            // startsWith: 模糊匹配
            if (name.startsWith("张")){
                list1.add(name);
            }
        }
        //2. 把'张'开头,长度为3的元素存储到新集合中
        ArrayList<String> list2 = new ArrayList<>();
        for (String name : list1) {
            if (name.length() == 3){
                list2.add(name);
            }
        }
        //3. 遍历打印最终结果
        for (String name : list2) {
            System.out.println(name);
        }

        // 方法二 stream流   filter--过滤方法
        System.out.println("============================");
        list.stream().filter(name->name.startsWith("张")).filter(name->name.length() == 3).forEach(name-> System.out.println(name));

    }
}

Stream流的使用步骤

  1. 先得到一条Stream流,然后把数据放上去
  2. 利用stream的各种API进行各种操作:
    – 中间方法: 过滤,转换。即方法调用完毕可以调用其他方法
    – 终结方法: 统计,打印。即方法调用完毕不能调用其他方法

Stream使用方式

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.stream.Stream;

public class Demo2 {
    public static void main(String[] args) {
        /**
         * 单列集合     default Stream<E> stream                         Collections中的默认方法
         * 双列集合     无                                               无法直接使用stream流
         * 数组        public static<T> Stream<T> stream(T[] array)     Arrays工具类中的静态方法
         * 零散数据     public static<T> Stream<T> of(T...values)        stream接口中的静态方法
         */

        // 单列集合
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"张三","李四","王五");
        list.stream().forEach(name -> System.out.println(name));
        System.out.println("====================");

        // 双列集合
        HashMap<String,String> map = new HashMap<>();
        map.put("梅西","阿根廷");
        map.put("内马尔","巴西");
        map.put("苏亚雷斯","乌拉圭");
        // 获取map中的所有key
        map.keySet().stream().forEach(name -> System.out.println(name));
        System.out.println("====================");
        // 获取map的键值对
        map.entrySet().stream().forEach(name -> System.out.println(name));
        System.out.println("====================");

        // 数组
        int[] arr = {1,2,3,4,5};
        Arrays.stream(arr).forEach(s -> System.out.println(s));
        System.out.println("====================");

        // 零散数据, 注意: 方法的形参是一个可变参数,可以传递零散数据,也可以传递数组,但数据必须是引用数据类型的,不能传递基本数据类型
        Stream.of("a","b","c").forEach(s -> System.out.println(s));
        System.out.println("====================");
        Stream.of(arr).forEach(s -> System.out.println(s));  // 输出结果不是1,2,3,4,5   而是一个地址
        String[] newArr = {"a","b","c"};
        System.out.println("====================");
        Stream.of(newArr).forEach(s -> System.out.println(s));  // 输出结果不是a,b,c 
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值