我的第一篇博客(Stream流)

本文介绍了Java后端开发中Stream流的使用,包括其与Lambda表达式的结合简化集合操作,以及获取Stream流的方式,如从单列集合、双列集合和数组中获取。作者分享了Stream流的使用步骤和示例代码,旨在帮助读者理解和实践Stream流的高效编程技巧。
摘要由CSDN通过智能技术生成

        本人目前大三在读,为了明年的实习,开始记录学习Java后端的内容,目前具有一定的java基础,在跟随黑马进行Javaweb课程的学习。因为之前java基础跟的是阿玮,跳着看的,所以现在补一补……

        首先,stream流结合了Lambda表达式,去进行简化集合、数组的操作。

例如下面这一句,就使用到了stream流

list1.stream().filter(name->name.startsWith("张")).filter(name -> name.length() == 3).forEach(name -> System.out.println(name))

其目的是过滤出list1中名字开头为张且长度为三的名字内容,并对其进行打印,而我们如果正常编写代码的情况如下所示

//1.把所有以“张”开头的存储到新集合中
ArrayList<String> list2 = new ArrayList<>();
for (String name : list1) {
    if (name.startsWith("张")){
        list2.add(name);
    }
}
//System.out.println(list2);

//2.把张开头的,长度为3的元素在存储到新集合中
ArrayList<String> list3 = new ArrayList<>();
for (String name : list2) {
    if (name.length() == 3){
        list3.add(name);
    }
}
for (String name : list3) {
    System.out.println(name);
}

代码量繁琐且复杂,对比stream流,我们可以很好地简化代码。

接下来,介绍一下stream流的使用步骤

1.先得到一条Stream流(流水线),并把数据放上去。

2.利用Stream流中的API进行各种操作(如中间方法:过滤、转换;终结方法:统计、打印等)

2.1使用中间方法对流水线上的数据进行操作

2.2使用终结方法对流水线上的数据进行操作

现在我们分别对这些步骤进行学习

1.如何获取一条流水线并把数据放上去

单列集合获取一条stream流

public class StreamDemo2 {
    public static void main(String[] args) {
        //1.单列集合获取stream流
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"a","b","c","d","e","f");
        /*//获取到一条流水线,并把集合中的数据放到流水线上
        Stream<String> stream1 =list.stream();
        //使用终结方法打印一下流水线上的所有数据
        stream1.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                //s:依次表示流水线上的每一个数据
                System.out.println(s);
            }
        });*/
//        最终代码
        list.stream().forEach(s -> System.out.println(s));
    }
}

双列集合获取stream流(两种方式)

public class StreamDemo3 {
    public static void main(String[] args) {
        //双列集合不能直接使用stream流,你需要用单列集合去转换

        //1.创建双列集合 哈希表不能保证存和取的顺序
        HashMap<String,Integer> hm = new HashMap<>();
        //2.添加数据
        hm.put("aaa",111);
        hm.put("bbb",222);
        hm.put("ccc",333);
        hm.put("ddd",444);
        hm.put("eee",555);

        //3.获取stream流 keyset获得的是键
//        hm.keySet().stream().forEach(s -> System.out.println(s));

        //4.第二种获取stream流 enterySet获得的是键值对
        hm.entrySet().stream().forEach(s -> System.out.println(s));
    }
}
数组获取Stream流
public class StreamDemo4 {
    public static void main(String[] args) {
        //数组获取Stream流

        //1,创建数组
        int [] arr1 = {1,2,3,4,5,6,7,8,9,10};

        String[] arr2 = {"a","b","c"};

        //2.获取Stream流
        Arrays.stream(arr1).forEach(s -> System.out.println(s));

        System.out.println("=============================");

        Arrays.stream(arr2).forEach(s -> System.out.println(s));
    }
}

如果数组是基本数据类型调用的是下面2,3,4三种方法

如果数组是引用数据类型调用的是第一种带有泛型的引用数据方法

最后一种就是零散数据的stream流了

public class StreamDemo5 {
    public static void main(String[] args) {
        //一堆零散数据 public static<T> Stream<T> of(T...values) Stream接口中的静态方法


        Stream.of(1,2,4,3,3,4,6).forEach(s -> System.out.println(s));

        System.out.println("===========================================");

        Stream.of("a","b","c","d","e","f","g").forEach(s -> System.out.println(s));
    }
}

注意:Stream流接口中静态方法of的细节

方法的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组

但是数组必须是引用数据类型的,如果传递基本数据类型,是会把整个数组当做一个元素,放到Stream流中。

以上内容全整理于黑马阿玮的java(stream流课程中),如有问题,还请大佬们多多指正!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余阳867

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值