Java Stream Exercise(2) (2024.7.29)

        StreamExercise2

package StreamExercise20240729;

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

public class StreamExercise2 {
    public static void main(String[] args) {
        // Stream中的主要方法
        // 1.获取Stream流:创建一条Stream流水线,并将数据元素放进流水线准备进一步操作
        // 2.中间方法:流水线上面的操作(如filter),操作中间方法之后,可以继续进行其他操作
        // 3.终结方法:一个Stream流中只能有一个终结方法,终结方法是Stream流中的最后一个操作,一旦使用,不能再操作Stream流

        // 生成Stream流的方式
        // 1.Collection体系的集合:可以使用默认的方法生成Stream流
        // List系列
        List<String> list = new ArrayList<>(List.of("张三丰","张无忌","张翠山","王二麻子","张良","谢广坤"));
        Stream<String> stream = list.stream(); // list系列的集合可以通过stream方法得到Stream对象
        Stream<String> stream1 = stream.filter(s -> s.startsWith("张")); // 不建议使用对象接收Stream方法的返回值
        // Set系列
        Set<String> set = new HashSet<>(List.of("张三丰","张无忌","张翠山","王二麻子","张良","谢广坤"));
        set.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));

        // 2.Map体系的集合无法直接生成Stream流,需要转成Set集合,然后间接的生成流
        Map<String, String> map = new HashMap<>();
        map.put("a", "1");
        map.put("b", "2");
        map.put("c", "3");
        map.put("d", "4");
        map.put("e", "5");
        map.put("f", "6");
        /* map.stream() 可见Map中是没有Stream()这个方法的,所以说不能直接转 */
        // 先将Map转换为Set集合,然后再用Set集合得到Stream集合,再进行操作
        Set<String> keySet = map.keySet();
        keySet.stream().filter(s -> s.startsWith("a")).forEach(s -> System.out.println(s + " : " + map.get(s)));

        // 3.同种数据类型的多个数据(非集合和数组中):通过Stream接口的静态方法of(T... values)生成Stream流
        Stream<String> stringStream = Stream.of("a", "b", "c");
        Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
        stringStream.filter(s -> s.startsWith("a")).forEach(s -> System.out.printf(s));
        System.out.println();
        integerStream.filter(s -> s == 3).forEach(s -> System.out.println(s));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值