• 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);
        }
    }
  • 相关阅读:
    4.1.7 POD对象
    异常处理
    POJ3167 Cow Patterns [KMP]
    POJ1961 Period [KMP应用]
    POJ2778 DNA Sequence [AC自动机+矩阵]
    HDU2243 考研路茫茫——单词情结 [AC自动机+矩阵]
    POJ2185 Milking Grid [KMP应用]
    POJ2541 Binary Witch [状态压缩]
    ZOJ3430 Detect the Virus [AC自动机]
    POJ2752 Seek the Name, Seek the Fame [KMP]
  • 原文地址:https://www.cnblogs.com/lyhero11/p/13680070.html
Copyright © 2020-2023  润新知