Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2

Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2


目录

文章目录

  • 1、Stream流特点
  • 2、filter:过滤
  • 3、map:映射
    • ***后记*** :



内容

1、Stream流特点

  • Stream流属于管道流,只能被消费一次
  • 第一个Stream流调用完毕,数据会流转到下一个Stream流
  • 第一个Steam流调用完毕,流会关闭,不能再调用方法

2、filter:过滤

  如果需要吧某些元素过滤掉,可以通过filter方法吧一个流转换成另外一个子集流,方法签名:

修饰符 返回值类型 方法名 参数列表 描述
public abstract Stream filter Predicate predicate 返回由与此给定谓词匹配的此流的元素组成的流。

  该接口几首一个Predicate函数式接口(可以说Lambda活方法引用)作为筛选条件。

  • 图示2-1:Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2_第1张图片

  • 示例2-1:打印女老师的信息

  • 老师类代码2-1:

      package stream.methods;
    
      public class Teacher {
      	private String name;
      	private int age;
      	private char gender;
      	private double salary;
    
      	public Teacher() {}
    
      	public Teacher(String name, int age, char gender, double salary) {
      		super();
      		this.name = name;
      		this.age = age;
      		this.gender = gender;
      		this.salary = salary;
      	}
    
      	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;
      	}
    
      	public char getGender() {
      		return gender;
      	}
    
      	public void setGender(char gender) {
      		this.gender = gender;
      	}
    
      	public double getSalary() {
      		return salary;
      	}
    
      	public void setSalary(double salary) {
      		this.salary = salary;
      	}
    
      	@Override
      	public String toString() {
      		return "Teacher [name=" + name + ", age=" + age + ", gender=" + gender + ", salary=" + salary + "]";
      	}
      }
    
  • 测试类代码2-2:

      package stream.methods;
    
      import java.util.ArrayList;
      import java.util.List;
    
      public class TestStreamFilter {
      	public static void main(String[] args) {
      		List teachers = new ArrayList<>();
      		teachers.add(new Teacher("Andy", 25, '女', 5000));
      		teachers.add(new Teacher("Monica", 30, '女', 6000));
      		teachers.add(new Teacher("Ross", 27, '男', 5500));
      		teachers.add(new Teacher("Richel", 21, '女', 4000));
      		teachers.add(new Teacher("Joey", 28, '男', 8000));
    
      		teachers.stream().filter(t -> t.getGender() == '女').forEach(t -> System.out.println(t));
      	}
      }
      测试结果:
      Teacher [name=Andy, age=25, gender=女, salary=5000.0]
      Teacher [name=Monica, age=30, gender=女, salary=6000.0]
      Teacher [name=Richel, age=21, gender=女, salary=4000.0]
    

3、map:映射

  如果需要把流中的元素映射到另外一个流中,可以使用map方法,方法签名:

修饰符 返回值类型 方法名 参数列表 描述
public abstrac R Stream map Function mapper 返回由给定函数应用于此流的元素的结果组成的流。
  • 图示3-1:Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2_第2张图片

  • 特点:不改变流中元素数量

  • 示例3-1:过新年了,全体教师加薪10%,打印老师信息

  • 老师类代码3-1:同2-1:

  • 测试类代码3-2:

      package stream.methods;
    
      import java.util.ArrayList;
      import java.util.List;
    
      public class TestStreamMap {
      	public static void main(String[] args) {
      		List teachers = new ArrayList<>();
      		teachers.add(new Teacher("Andy", 25, '女', 5000));
      		teachers.add(new Teacher("Monica", 30, '女', 6000));
      		teachers.add(new Teacher("Ross", 27, '男', 5500));
      		teachers.add(new Teacher("Richel", 21, '女', 4000));
      		teachers.add(new Teacher("Joey", 28, '男', 8000));
    
      		teachers.stream().map(t -> {
      			t.setSalary(t.getSalary() * 1.1);
      			return t;
      			})
      		.forEach(t -> System.out.println(t));
      	}
      }
      测试结果:
      Teacher [name=Andy, age=25, gender=女, salary=5500.0]
      Teacher [name=Monica, age=30, gender=女, salary=6600.000000000001]
      Teacher [name=Ross, age=27, gender=男, salary=6050.000000000001]
      Teacher [name=Richel, age=21, gender=女, salary=4400.0]
      Teacher [name=Joey, age=28, gender=男, salary=8800.0]
    

后记

   本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785

前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA

你可能感兴趣的:(JAVA,#,Javase)