五、Lambda Stream查找与匹配

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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值