• Java8 Stream流


    Java8的stream是个对集合中数据处理高层抽象,当然不止可以处理集合,也可以是数组,I/O channel, 产生器generator等。
    其中大数据量的处理推荐使用并行流,比如对0到1千亿的整数求和,jvm自动分配多线程进行分段求和,再将中间结果进行汇总再求和。其底层使用的是 fork/join实现,这种分段分而治之的思想跟map/reduce有点像。

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class StreamTest {
        public static void main(String[] args) {
            String[] strArray = {"abc", "", "bc", "efg", "abcd","", "jkl"};
            List<String> list = Arrays.asList(strArray);
            // list过滤掉为空的元素
            List<String> filtered =  list.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
            //当数据较多时,推荐使用并行流。 jvm会开启cpu core数个线程并行处理,并将结果归并。底层是用fork/join框架实现的。
            //List<String> filtered =  list.parallelStream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
            System.out.println(filtered);
            
            List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
            // 获取对应的平方数,并对结果进行去重
            List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
            System.out.println(squaresList);
            squaresList.forEach(System.out::println);
        }
    }
  • 相关阅读:
    c# 进程间同步实现
    mysql 中文支持
    堆排序算法详解
    CodeSmith 使用
    东软C#编程规范
    红伞各版key 申请和下载
    sql 添加删除字段
    第一个Hibernate 程序终于测试通过了
    C#下载大文件并实现断点续传
    Ms rdlc 打印
  • 原文地址:https://www.cnblogs.com/lyhero11/p/13680070.html
Copyright © 2020-2023  润新知