Java8的lambda表达式学习记录—lambda表达式Stream流学习八、久—Stream的中间操作 : 查找与匹配、归约与收集、分组
一,查找与匹配
Stream流的终止操作,以下操作都是Stream.
调用:
allMatch
——检查是否匹配所有元素,返回值为booleananyMatch
——检查是否至少匹配一个元素,返回值为booleannoneMatch
——检查是否没有匹配的元素,返回值为booleanfindFirst
——返回第一个元素,返回值为Optional集合findAny
——返回当前流中的任意元素,返回值为Optionalcount
——返回流中元素的总个数,返回值为Longmax
——返回流中的最大值,返回值为Optionalmin
——返回流中的最小值,返回值为Optional
//Employee对象新增枚举类型
public class Employee {
private status status;
public enum status{
FREE,
BUSY,
VOCATION;
}
}
@Test
public void test1(){
List<Employee> list = Arrays.asList(
new Employee("张三", 18, 9999.99, Employee.status.FREE),//枚举类型
new Employee("李四", 20, 7777.77, Employee.status.BUSY),
new Employee("王五", 36, 5555.55, Employee.status.VOCATION),
new Employee("赵六", 50, 3333.33, Employee.status.FREE),
new Employee("田七", 10, 2222.22, Employee.status.VOCATION)
);
Boolean b1 = list.stream().allMatch((e) -> e.getStatus().equals(Employee.status.BUSY));//.allMatch匹配所有
System.out.println(b1);//是否所有的都和BUSY相等, false
Boolean b2 = list.stream().anyMatch(e -> e.getStatus().equals(Employee.status.BUSY));//.anyMatch匹配至少一个
System.out.println(b2);//至少有一个和BUSY相等, true
Boolean b3 = list.stream().noneMatch(e -> "花招虫".equals(e.getName()));//.noneMatch是否没有匹配的元素
System.out.println(b3);//没有值与之相匹配, true
Optional<Employee> op = list.stream().sorted(Comparator.comparingDouble(Employee::getSalary))