zoukankan      html  css  js  c++  java
  • Stream学习笔记

    1. 创建Stream实例的五种方式

      @Test
        public void test1(){
            // 创建Stream对象的第一种方式
            List<String> list = Lists.newArrayList("A", "B", "C");
            Stream<String> stream1 = list.stream();
    
            // 创建Stream对象的第二种方式
            String[] arr = {"A", "B"};
            Stream<String> stream2 = Arrays.stream(arr);
    
            // 创建Stream对象的第三种方式
    
            Stream<String> stream3 = Stream.of("A", "B");
    
            // 创建Stream对象的第四种方式
            // iterate会无限执行,所以limit只取前5个
            Stream<Integer> stream4 = Stream.iterate(0, x -> x * x).limit(5);
    
            // 创建Stream对象的第五种方式
            // generate也会无限执行,所以limit只取前5个
            Stream<Double> stream5 = Stream.generate(Math::random).limit(5);
        }

    2. Stream常用Api

     @Test
        public void test2() {
            List<String> list = Lists.newArrayList("abc", "bcd", "efg", "a12", "bcd");
            // 1.过滤
            list.stream().filter(x -> x.contains("b")).forEach(System.out::println);
    
            // 2.取前n
            list.stream().limit(1).forEach(System.out::println);
    
            //3. 跳过前n个
            list.stream().skip(2).forEach(System.out::println);
    
            //4. distinct 去重
            list.stream().distinct().forEach(System.out::println);
    
            //5. map映射
            list.stream().map(x -> x.toUpperCase()).forEach(System.out::println);
    
            System.out.println("-----------------------");
            //6. flatMap映射(与scala中的map,flatMap一样的),返回的是个Stream
            list.stream().flatMap(x -> Stream.of(x.toUpperCase())).forEach(System.out::println);
    
    
            //7.排序  sorted() ---> 自然排序
            List<Integer> list1 = Lists.newArrayList(12, 1, 0, -1, 2, 56, 34);
            list1.stream().sorted().forEach(System.out::println);
    
            //8.排序 sorted(Comparator com)  --> 按指定规则排序
            list1.stream().sorted((e1, e2) -> -Integer.compare(e1, e2)).forEach(System.out::println);
    
            //9. 匹配与查找
            // list中的所有元素都含有"a"
            boolean ret = list.stream().allMatch(x -> x.contains("a"));
            System.out.println(ret);
    
            // list只要有一个元素包含有"a",就true
            ret = list.stream().anyMatch(x -> x.contains("a"));
            System.out.println(ret);
    
            //list中没有以"A"开头的元素
            ret = list.stream().noneMatch(x -> x.startsWith("A"));
            System.out.println(ret);
    
            //第一个元素
            Optional<String> first = list.stream().findFirst();
            System.out.println(first.get());
    
            //找任意一个元素
            Optional<String> any = list.parallelStream().findAny();
            System.out.println(any.get());
    
            // 找最大值
            Optional<Integer> max = list1.stream().max(Integer::compareTo);
            // 上面这行代码是下面代码的简写
    //        Optional<Integer> max1 = list1.stream().max((e1, e2) -> Integer.compare(e1, e2));
            System.out.println(max.get());
    
            //10 , 归约
            Optional<Integer> reduce = list1.stream().reduce((x, y) -> x + y);  // list1中元素求和
            System.out.println(reduce.get());
    
            Integer sum = list1.stream().reduce(0, Integer::sum);  // list1中元素求和
            System.out.println(sum);
    
            Integer sum2 = list1.stream().reduce(10, Integer::sum);  // 10 + list1中元素求和
            System.out.println(sum2);
    
            //11. collect--> 将stream转成list集合
            List<Integer> collect = list1.stream().map(x -> x * 2).collect(Collectors.toList());
            collect.forEach(System.out::println);
    
        }
  • 相关阅读:
    六、使用media实现响应式布局
    五、块全屏居中
    四、圆角长方形的设计
    三、常用行内元素与块元素
    二、“…”显示超出文本
    一、CSS实现横列布局的方法总结
    window如何一键关闭所有进程程序
    纯css竟可以做出边框这样长宽度的过渡效果
    改变网页的兼容性模式
    bootstrap知识笔记
  • 原文地址:https://www.cnblogs.com/z-qinfeng/p/11762114.html
Copyright © 2011-2022 走看看