Lambda Stream查找与匹配
public class TestLambda{
/**
* 终止操作
* 查找与匹配
* allMatch -- 检查是否匹配所有元素
* anyMatch -- 检查是否至少匹配一个元素
* noneMacth -- 检查是否美哟匹配所有元素
* findFirst -- 返回第一个元素
* findAny -- 返回当前流中的任意元素
* count -- 返回流中的元素的总个数
* max -- 返回流中最大值
* min -- 返回流中最小值
**/
List<Employee> emps = Arrays.asList(
new Employee(101,"张三",18, Status.BUSY),
new Employee(102,"李四",28, Status.BUSY),
new Employee(103,"王五",38, Status.FREE),
new Employee(104,"赵六",48, Status.VOCATION),
new Employee(104,"赵六",48, Status.FREE),
new Employee(105,"田七",58, Status.VOCATION)
);
@Test
public void test1(){
boolean b1 = emps.stream()
.allMatch(e-> e.getStatus().equals(Status.BUSY));
System.out.println(b1);
boolean b2 = emps.stream()
.anyMatch(e -> e.getStatus().equals(Status.BUSY));
Sytem.out.println(b2);
boolean b3 = emps.stream()
.noneMatch(e-> e.getStatus().equals(Stauts.BUSY));
System.out.println(be);
//去除按年龄排序的第一个元素
Optional op = emps.stream()
.sorted((e1,e2) -> Integer.compare(e1.getAge(),e2.getAge()))
.findFirst();
System.out.println(op.get());
//查找任意空闲,单个线程找
Optional op1 = emps.stream().filter(e -> e.getStatus().equals(Status.BUYS));
.findAny();
System.out.println(op1.get());
//查找任意空闲,多个线程找
Optional op2 = emps.parallelStream().filter(e -> e.getStatus().equals(Status.BUSY)).findAny();
System.out.println(op2.get());
}
@Test
public void test2(){
Long count = emps.stream().count();
System.out.println(count);
Option op = emps.stream.max((e1,e2)->Integer.compare(e1.getAge(),e2.getAge()));
System.out.println(op.get());
//查找年龄最小,先将年龄这一列提取出来,然后取最小
Option op2 = emps.stream()
.map(Employee::getAge)
.min(Integer::compare);
System.out.println(op2);
}
}
public enum Status{
FREE,BUSY,VOCATION;
}