栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中Stream流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中Stream流

Stream流作用

简化集合、数组操作的API。结合了Lambda表达式。
 

Stream思想与使用步骤

a.先得到集合或者数组的Stream流(就是一根传送带)。
b.把元素放上去。
c.然后就用这个Stream流简化的API来方便的操作元素。

集合与数组获取Stream流方式

示例代码

package stream.exception.log.d2_stream;

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

public class StreamDemo1 {
    public static void main(String[] args) {
        //Collection集合获取流
        Collection list=new ArrayList<>();
        Stream s=list.stream();


        //Map集合获取流
        Map maps=new HashMap<>();
        //键流
        Stream keyStream=maps.keySet().stream();
        //值流
        Stream valueStream=maps.values().stream();
        //键值对流
        Stream> keyAndValueStream=maps.entrySet().stream();

        //数组获取流
        String[] names={"张三","李四","王五","赵六"};
        Stream nameStream=Arrays.stream(names);//方法一

        Stream nameStream2= Stream.of(names);//方法二
    }
}

Stream流常用API

示例代码

StreamDemo3类(实现类)

package stream.exception.log.d2_stream;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Stream;


public class StreamDemo2 {
    public static void main(String[] args) {
        List lists=new ArrayList<>();

        lists.add("张三");
        lists.add("李四");
        lists.add("王五");
        lists.add("张六");
        lists.add("张七");
        lists.add("周八");

        //过滤元素,做数据判断。  filter方法  源码:Stream filter(Predicate predicate);
        lists.stream().filter(new Predicate() {
            @Override
            public boolean test(String s) {
                return s.startsWith("张");//判断名字是否有张,并返回true
            }
        });

        //简化
        lists.stream().filter( s-> s.startsWith("张")).forEach(s -> System.out.println(s)); //判断名字是否有张,并返回true

        //count统计个数
        long size=lists.stream().filter(s->s.length()==2).count();
        System.out.println(size);

        //获取前两个元素,limit方法
        lists.stream().filter(s->s.startsWith("张")).limit(2).forEach(System.out::println);

        //跳过前几个元素,skip方法
        lists.stream().filter(s->s.startsWith("张")).skip(2).forEach(System.out::println);

        //map加工方法:第一个参数原材料->第二个参数时加工后的结果

        //给集合元素都加上一个:翻斗幼儿园
        lists.stream().map(s -> "翻斗幼儿园:" +s).forEach(System.out::println);


        //需求:将所有名称,都加工成一个学生类对象
        lists.stream().map(s -> new Student(s)).forEach(System.out::println);

        //合并流,concat方法
        Stream s1=lists.stream().filter(s->s.startsWith("张"));
        Stream s2=Stream.of("Java1","Java2");
        Stream s3=Stream.concat(s1,s2);
        s3.forEach(System.out::println);

    }
}

 Stuent类(学生类)

package stream.exception.log.d2_stream;

public class Student {
    private String name;

    public Student(){};

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + ''' +
                '}';
    }
}
收集Stream流到集合或数组中

示例代码

package stream.exception.log.d2_stream;

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


public class StreamDemo3 {
    public static void main(String[] args) {
        List lists=new ArrayList<>();
        lists.add("张三");
        lists.add("李四");
        lists.add("王五");
        lists.add("张六");
        lists.add("张七");
        lists.add("周八");


        Stream s1=lists.stream().filter(s->s.startsWith("张"));

        //将Stream流收集到List集合中
//        List zhangList = s1.collect(Collectors.toList());
//        System.out.println(zhangList);

        //注意:流只能使用一次

        //将Stream流收集到Set集合中
//        Set zhangSet = s1.collect(Collectors.toSet());
//        System.out.println(zhangSet);

        //将Stream流收集到数组
        Object[] arrs= s1.toArray();
        System.out.println("Arrays数组内容:"+Arrays.toString(arrs));
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/843332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号