Java流式处理
2021-01-24 10:15
标签:遍历 reac 方便 print 函数 gen ted 模式 数据 在java8之前,很多时候我们都需要获取到集合底层的数据,将其进行处理后在返回,而j这种情况都需要我们自己来Iterator遍历。 受到函数式编程的影响,java8以后新增的java.util.stream包中的类提供了Stream API,以支持对元素流进行函数式操作。 Stream它并不是一个容器,它只是对容器的功能进行了增强,添加了很多便利的操作,例如查找、过滤、分组、排序等一系列的操作。 并且有串行、并行两种执行模式,并行模式充分的利用了多核处理器的优势,使用fork/join框架进行了任务拆分,同时提高了执行速度。 使用流式操作大大方便了我们对集合的处理,并且增强了代码的可读性。 通过集合获取:java8中的Collection提供了两个获取流的方法: 通过数组获取:使用Arrays的静态方法stream 也可通过Stream接口本身提供的generate方法和of方法来获取流,这里就不加赘述了。 中间操作也就是操作的返回值仍为流的操作 先创建一个list 如果要筛选出大于30小于100的元素。 普通操作 流式操作 这样操作即简单,每一步的目的也一目了然。 将list元素从大到小排序 普通操作 流式操作 将元素中的每一个数变为原来的2倍 普通操作 流式操作 流式操作 流式操作 流式操作 上面已经使用过了forEach,事实上,上面的写法是一种简写,完整的写法如下 将元素累加,流式操作 返回一个Set,流式操作 上面是以List作为演示,其他容器基本都一致,不过Map类型需要先调用entrySet()方法在进行如上处理。 Java流式处理 标签:遍历 reac 方便 print 函数 gen ted 模式 数据 原文地址:https://www.cnblogs.com/ylcc-zyq/p/12865992.html基本介绍
常用操作
获取流的方法
中间操作
List
for (Integer integer : list) {
if (integer>30 && integer
list.stream().filter(item -> item>30&&item
Collections.sort(list, new Comparator
list.stream().sorted((o1,o2)-> o1-o2).forEach(System.out::println);
for (int i = 0; i
list.stream().map(item-> item=item*2).forEach(System.out::println);
List
list.stream().distinct().forEach(System.out::println);
list.stream().limit(3).forEach(System.out::println);
list.stream().skip(3).forEach(System.out::println);
最终操作
list.stream().forEach(a-> System.out.println(a));
System.out.println(list.stream().reduce((a, b) -> a + b).get());
list.stream().collect(Collectors.toSet()).forEach(System.out::println);
System.out.println(list.stream().min((o1, o2) -> o1 - o2).get());
System.out.println(list.stream().max((o1, o2) -> o1 - o2).get());