Stream流的各种API方法

Stream流的中间方法

Stream的API方法

注意:

  1. 使用中间方法会返回新的Stream流, 原来的stream流只能使用一次, 建议使用链式编程
  2. 修改stream流中的数据, 不会影响原来集合或者数组中的数据
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;

public class Demo3 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"张三","李四","王五","张三丰","小蜘蛛","小李子","张无忌","小蜘蛛","小蜘蛛");
        
        // stream流过滤方法  --  filter
        list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
        System.out.println("====================");
        
        // stream流获取前几个元素  -- limit
        list.stream().limit(3).forEach(s -> System.out.println(s));
        System.out.println("====================");
        
        // stream流跳过前几个元素  -- skip
        list.stream().skip(4).forEach(s -> System.out.println(s));
        System.out.println("====================");
        
        // stream流去重元素  -- forEach
        list.stream().distinct().forEach(s -> System.out.println(s));
        System.out.println("====================");
        
        // stream流合并  -- concat
        ArrayList<String> newList = new ArrayList<>();
        Collections.addAll(newList,"梅西","内马尔","苏亚雷斯");
        Stream.concat(list.stream(),newList.stream()).forEach(s -> System.out.println(s));
        System.out.println("====================");
        
        // stream流的数据类型转换  -- map
        ArrayList<String> newListAge = new ArrayList<>();
        Collections.addAll(newListAge,"梅西-36","内马尔-31","苏亚雷斯-34","杜兰特-35");
        // 获取每个球星的年龄
        newListAge.stream().map(s -> Integer.parseInt(s.split("-")[1])).forEach(s -> System.out.println(s));
    }
}

Stream流的终结方法

API方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Demo4 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"张三","李四","王五","张三丰","小李子","张无忌","小蜘蛛");
        // stream流遍历方法  --  forEach
        list.stream().forEach(s -> System.out.println(s));
        System.out.println("====================");
        
        // stream流统计方法  --  count
        long count = list.stream().count();
        System.out.println(count);
        System.out.println("====================");
        
        // stream流收集流中的数据存储到数组中  --  toArray
        // 方法一: 转换成Object类型的数组
        Object[] objects = list.stream().toArray();
        System.out.println(Arrays.toString(objects));
        System.out.println("====================");
        // 方法一: 转换成具体类型的数组  --  toArray[参数]
        // 参数的作用: 负责创建一个指定类型的数组, 底层原理就是把流中的每个数据存储到指定类型的数组中并返回
        // lambda表达式中的 s 代表stream流中的元素个数
        String[] array = list.stream().toArray(s -> new String[s]);
        System.out.println(Arrays.toString(array));
    }
}
import java.util.*;
import java.util.stream.Collectors;

public class Demo5 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"梅西-男-36","内马尔-31","苏亚雷斯-男-34","杜兰特-男-35","安东内拉-女-32","王爽-女-25");

        // stream流 收集流中的数据放到集合中
        // 方法1: 收集男性的数据存储到list集合中  --  collect(Collectors.toList())
        List<String> newList = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toList());
        System.out.println(newList);
        System.out.println("====================");

        // 方法2: 收集男性的数据存储到set集合中  --  collect(Collectors.toSet())  具有去重作用
        Set<String> setList = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toSet());
        System.out.println(setList);
        System.out.println("====================");

        // 方法2: 收集男性的数据存储到map集合中  --  collect(Collectors.toMap(参数一,参数二))  参数一: 键的生成规则; 参数二: 值的生成规则
        // 注意: map中的键不能重复, 名字作为键, 年龄作为值
        Map<String, String> map = list.stream().filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toMap(s -> s.split("-")[0], s -> s.split("-")[2]));
        System.out.println(map);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值