11.Java8新特性_Stream_查找与匹配
Stream的终止操作
终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer,甚至是void
package com.sggeleven; import com.sggthree.Employee; import com.sun.org.apache.xpath.internal.operations.Bool; import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.function.Predicate; public class TestStreamAPI4 { List<Employee> employees = Arrays.asList( new Employee("李欣欣",24,13000.10), new Employee("孟宇",26,15000.0), new Employee("李小慧",30,20000.77), new Employee("李小飞",28,500.00) ); /* 查找与匹配 allMatch - 检查是否匹配所有元素 anyMatch - 检查是否至少匹配一个元素 noneMatch - 检查是否没有匹配所有元素 findFirst - 返回第一个元素 findAny - 返回当前流中的任意元素 count - 返回流中元素的总个数 max - 返回流中最大值 min - 返回流中最小值 */ @Test public void test1(){ Boolean bl = employees.stream().allMatch((x) -> x.getMoney() > 100.00); System.out.println(bl); Boolean bl1 = employees.stream().anyMatch((x) -> x.getMoney() > 25000.00); System.out.println(bl1); Boolean bl2 = employees.stream().noneMatch((x) -> x.getMoney() < 1.00); System.out.println(bl2); Optional<String> optional = employees.stream() .sorted((e1,e2) -> -e1.getMoney().compareTo(e2.getMoney())) .map(Employee::getName) .findFirst(); System.out.println(optional.get()); Optional<Employee> optional2 = employees.parallelStream().filter((e) -> e.getMoney() > 10000.00) .findAny(); System.out.println(optional2.get()); } @Test public void test2(){ long long1 = employees.stream().count(); System.out.println(long1); Optional<String> optional3= employees.stream() .filter((x) -> x.getAge() > 25) .max((e1,e2) -> e1.getAge().compareTo(e2.getAge())) .map(Employee::getName); System.out.println(optional3.get()); Optional<Employee> optional4= employees.stream() .filter((x) -> x.getAge() > 25) .min((e1,e2) -> e1.getAge().compareTo(e2.getAge())); System.out.println(optional4.get()); } }