Java8特性之用Stream流代替For循环操作详解

 更新时间:2021年09月30日 15:38:26   作者:四季人06  
这篇文章主要介绍了Stream流代替For循环进行输出,这样可以使代码更简洁,希望对大家有所帮助。一起跟随小编过来看看吧

准备一个实体类

public class Student {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

准备一个List集合

        List<Student> list=new ArrayList<>();
        Student s1=new Student();
        s1.setName("张三");
        s1.setAge(18);
        list.add(s1);
        Student s2=new Student();
        s2.setName("李四");
        s2.setAge(22);
        list.add(s2);

传统的for循环

        //for循环
        for (int i=0;i< list.size();i++){
            System.out.println(list.get(i));
        }

        //增强for循环
        for(Student student: list){
            System.out.println(student);
        }
        //迭代器
        Iterator<Student> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

使用Stream流

        //遍历List集合
        list.stream().forEach(str->{
           System.out.println(str.getName()+":"+str.getAge());
        });
        //过滤 把名字为李四的过滤掉
        list.stream().filter(str -> !"李四".equals(str.getName())).forEach(str -> {
            System.out.println(str.getName()+":"+str.getAge());
        });
         //操作对象,拼接
       //String collect=list.stream().map(student->student.getName()).collect(Collectors.joining(",","前","后"));
       // System.out.println(collect);

先声明筛选条件,在遍历

 //声明一个条件 学生年龄大于18
 Predicate<Student> pred = (student) -> student.getAge() > 18;
 //调用方法
 selectStudent(list,pred);
 private static void selectStudent(List<Student> list, Predicate<Student> pred) {
        System.out.println("选出年龄大于18的学生:");
        list.forEach(student -> {
            if (pred.test(student)){
                System.out.println(student.getName()+":"+student.getAge());
            }
        });

    }

Stream操作 嵌套循环(2层)

//java 8 stream操作 嵌套循环
        List<Student> list = list1.stream().filter(student1 -> list2.stream()
                .anyMatch(studnet2 -> student1.getName().equals(studnet2.getName()) ))
                .collect(Collectors.toList());
        System.out.println("stream操作筛选后的结果" + list.get(0).getName());

但是不建议foreach套foreach

到此这篇关于Java8特性之用Stream流代替For循环操作详解的文章就介绍到这了,更多相关Java Stream流代替For循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简述Java中的四种引用类型

    简述Java中的四种引用类型

    从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用,下面分别介绍下这四种引用。
    2021-04-04
  • 基于令牌桶的限流器注解的简单实现详解

    基于令牌桶的限流器注解的简单实现详解

    令牌桶算法是一种常用的流量控制算法,用于限制请求或事件的发生速率,这篇文章主要介绍了如何基于令牌桶实现限流器注解,需要的可以参考一下
    2023-08-08
  • java实现Z字形扫描程序

    java实现Z字形扫描程序

    这篇文章主要为大家详细介绍了java实现Z字形扫描程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Java切割字符串的踩坑实战记录

    Java切割字符串的踩坑实战记录

    最近在项目中使用了java中的分割字符串,踩了一个坑,充分了展示了自己对java底层的认知有很多的不足和欠缺,下面这篇文章主要给大家介绍了关于Java切割字符串的踩坑实战记录,需要的朋友可以参考下
    2022-11-11
  • Java 中的内存映射 mmap

    Java 中的内存映射 mmap

    这篇文章主要介绍了Java 中的内存映射,mmap 是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和一段进程虚拟地址的映射,下面来看看详细内容,需要的朋友可以参考一下
    2021-11-11
  • Java8 Stream中间操作实例解析

    Java8 Stream中间操作实例解析

    这篇文章主要介绍了Java8 Stream中间操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Spring Boot 在启动时进行配置文件加解密的方法详解

    Spring Boot 在启动时进行配置文件加解密的方法详解

    这篇文章主要介绍了Spring Boot 在启动时进行配置文件加解密的方法,本文通过实例给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Java实现调用接口API并返回数据

    Java实现调用接口API并返回数据

    这篇文章主要介绍了Java实现调用接口API并返回数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • mybatisplus之使用@Select解读

    mybatisplus之使用@Select解读

    这篇文章主要介绍了mybatisplus之使用@Select解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用JPA插入枚举类型字段

    使用JPA插入枚举类型字段

    这篇文章主要介绍了使用JPA插入枚举类型字段,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06

最新评论