Stream流运算
java.util.stream
Interface Stream<T>
两种方式可以获取到流:
1.Collection 接口下有一个方法stream();
default Stream<E> stream()
返回一个顺序Stream与此集合作为其来源。
2.Stream接口种有一个方法 of 方法:
static <T> Stream<T> of(T... values)
返回其元素是指定值的顺序排序流。
public class TestStream { /*题目: * 筛选: * 1.ID必须是偶数 * 2.年龄必须大于20 * 3.用户名转换成小写 * 4.用户名字母倒着排序 * 5.只输出一个用户 */ public static void main(String[] args) { User user1 = new User(1,"A",18); User user2 = new User(2,"B",22); User user3 = new User(3,"C",20); User user4 = new User(4,"D",25); User user5 = new User(5,"E",16); User user6 = new User(7,"F",21); //集合就是存储 List<User> list = Arrays.asList(user1,user2,user3,user4,user5,user6); //计算交给流 // list.stream().filter((user)->{return user.getId()%2 == 0;}); list.stream() .filter(user->user.getId()%2 == 0) .filter(user->user.getAge()>20) .map((user)->{return user.getName().toLowerCase();}) .sorted((user11,user22)-> {return user22.compareTo(user11);}) .limit(1) .forEach(System.out::println); } }
流种的几个方法:
1.终结方法:返回值不再是流,不能进行链式编程
void forEach(Consumer<? super T> action) 对此流的每个元素执行操作。
long count() 返回此流中的元素数
2.延迟方法:返回值仍然是流,可以进行链式编程
Stream<T> filter(Predicate<? super T> predicate) 返回由与此给定谓词匹配的此流的元素组成的流。
<R> Stream<R> map(Function<? super T,? extends R> mapper) 返回由给定函数应用于此流的元素的结果组成的流。
Stream<T> sorted(Comparator<? super T> comparator) 返回由该流的元素组成的流,根据提供的Comparator进行排序
Stream<T> limit(long maxSize) 返回由该流的元素组成的流,截断长度不能超过maxSize 。
static <T> Stream<T> concat(Stream<? extends T> a,Stream<? extends T> b) 创建一个懒惰连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素

浙公网安备 33010602011771号