Stream + 并行流 +Optional +接口的方法 +日期组件+重复注解及类型注解

Stream + 并行流 +Optional +接口的方法 +日期组件+重复注解及类型注解

一、Stream流

1.终止操作 - 归约

归约:将流中的元素反复结合起来,得到一个值

map+reduce的连接通常称为map_reduce模式,因Google用它进行网络搜索而出名

方法 描述
reduce( T identity , BinaryOperator accumulator) 参数:(初始值,结合逻辑)
reduce(BinaryOperator accumulator) 参数:(结合逻辑)
public class Student implements Comparable<Student>{
   

	private String name;
	private int age;
	private double salary;
	private Course course;
	
	public Student() {
   
	}
	
	public Student(String name, int age, double salary, Course course) {
   
		this.name = name;
		this.age = age;
		this.salary = salary;
		this.course = course;
	}



	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 double getSalary() {
   
		return salary;
	}

	public void setSalary(double salary) {
   
		this.salary = salary;
	}

	public Course getCourse() {
   
		return course;
	}

	public void setCourse(Course course) {
   
		this.course = course;
	}
	
	

	@Override
	public String toString() {
   
		return "Student [name=" + name + ", age=" + age + ", salary=" + salary + ", course=" + course + "]";
	}

	@Override
	public int hashCode(){
   
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((course == null) ? 0 : course.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		long temp;
		temp = Double.doubleToLongBits(salary);
		result = prime * result + (int)(temp ^ (temp >>> 32) );
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
   
		if(this == obj)
			return true;
		if(obj == null)
			return false;
		if(getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if(age != other.age)
			return false;
		if(course != other.course)
			return false;
		if (name == null) {
   
			if (other.name != null) 
				return false;
		} else if(!name.equals(other.name))
			return false;
		if(Double.doubleToLongBits(salary) != Double.doubleToLongBits(other.salary))
			return false;
		return true;
	}
	@Override
	public int compareTo(Student o) {
   
		if(this == o){
   
			return 0;
		}
		if (this.age != o.age) {
   
			return Integer.compare(this.age, o.age);
		}
		return 1;
	}

}
public enum Course {
   

	JAVA,HTML,PYTHON;
}

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

import org.junit.Test;

public class Test01 {
   

	List<Integer> numList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
	List<Student> stuList = Arrays.asList(
			new Student("张三", 28, 4800,Course.JAVA),
			new Student("李四", 36, 7200,Course.JAVA),
			new Student("王五", 19, 9600,Course.HTML),
			new Student("赵六", 42, 6100,Course.HTML),
			new Student("孙七", 23, 9600,Course.PYTHON),
			new Student("吴八", 31, 3000,Course.PYTHON),
			new Student("李四", 36, 7200,Course.JAVA));
	
	@Test
	public void test01(){
   
		//需求:获取numList集合中元素的总和
		Integer reduce = numList.stream().reduce(0, (x,y)->x+y);
		System.out.println(reduce);
		
	}
	
	@Test
	public void test02(){
   
		//需求:获取stuList集合中所有学生工资总和
		Optional<Double> reduce = stuList.stream().map(Student::getSalary).reduce((salary1,salary2)->salary1+salary2);
		Double sum = reduce.get();
		System.out.println(sum);
		
	}
}

2.终止操作 - 收集

收集:将流转换为其他形式。接收一个Collector接口的实现,用于给Stream中元素做汇总的方法

方法 描述
collect(Collector<? super T, A, R> collector) 把元素放入Collector集合中
import java.util.ArrayList;
import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

import org.junit.Test;

public class Test02 {
   
	List<Student> stuList = Arrays.asList(
			new Student("张三", 28, 4800,Course.JAVA),
			new Student("李四", 36, 7200,Course.JAVA),
			new Student("王五", 19, 9600,Course.HTML),
			new Student("赵六", 42, 6100,Course.HTML),
			new Student("孙七", 23, 9600,Course.PYTHON),
			new Student("吴八", 31, 3000,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雨霖先森

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

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

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

打赏作者

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

抵扣说明:

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

余额充值