Java SE 11 Gold学习笔记(第四章)

Java SE 11 Gold资格考试相关

知识点总结

❌⭕️

  • 第四章 Stream API

間違えた:

間違えし易い:

分からない:

  1. CD

  2. AC ❌ ⭕️CD

    1. 中端操作的实际进行是在终端操作被实行的时候,这也可称为迟延评价。
    2. 终端操作是对stream最后的行为。因此经过终端操作处理的最后不能在被进行stream处理。
    3. 中端操作不是必须的,但终端操作是一定要有的。
    4. 中端操作一定会返回Stream object,但终端操作不一定。
  3. AC

  4. D❌ ⭕️A

    1. Collection接口中追加了defalut方法stream(),将包含collection object相同类型的stream object生成返回
  5. D

  6. A❌ ⭕️D

    1. forEach是终端操作,不能对同一个Stream使用两遍。会丢出IllegalStateException

    2. sample

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      public static void main(String[] args) {
      List<String> list = Arrays.asList("A", "B", "C");
      list.forEach(System.out::println);
      list.forEach(System.out::println);

      Stream<String> stream = list.stream();

      stream.forEach(System.out::println);
      stream.forEach(System.out::println);
      }

      /*output
      A
      B
      C
      A
      B
      C
      A
      B
      C
      Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
      at java.base/java.util.stream.AbstractPipeline.sourceStageSpliterator(AbstractPipeline.java:279)
      at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
      at chapter04.ForeachMethod.main(ForeachMethod.java:17)
      */

  7. D

    1. sample

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      HashMap<Integer, String> hashMap = new HashMap<>();
      hashMap.put(1, "A");
      hashMap.put(2, "B");
      hashMap.put(3, "C");

      System.out.println(hashMap);

      List<Integer> list = Arrays.asList(1, 2);
      hashMap.forEach((k, v) -> System.out.println(k + v));

  8. C

    1. sample

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      //Array类的几种stream方法
      int[] intArray = {1, 2, 3};
      double[] doubleArray = {1.0, 2.0, 3.0};
      long[] longArray = {1L, 2L, 3L};
      Object[] objectArray = {new HashMap<>(), new ArrayList(), new Arrays[]{}};

      IntStream intStream = Arrays.stream(intArray);
      DoubleStream doubleStream = Arrays.stream(doubleArray);
      LongStream longStream = Arrays.stream(longArray);
      Stream<Object> objectStream = Arrays.stream(objectArray);

  9. C

  10. AF

    1. sample

      1
      2
      3
      IntStream.range(1, 5).forEach(System.out::print); //1234
      IntStream.rangeClosed(1, 5).forEach(System.out::print);//12345

  11. B Stream.of( )方法的使用。

  12. B❌ ⭕️BD

    1. 从text file中读取文字列到Stream object的方法有两种,java.io.BufferedReader类和java.nio.file.Files类的lines方法,但是参数不同。
  13. D stream类的常用方法,filter过滤方法。

  14. A

  15. A❌ ⭕️C

    1. Stream的排序函数是sorted,不含参数的是按自然顺序排序,含参数的是Stream<T> sorted(Comparator<? super T> )c
  16. D❌ ⭕️C

    1. TreeSet生成时,构造函数的参数应有比较器的object,这道题考的是Comparable的comparing方法,参数应该是生成返回用来sort的key的Function的实现object。因此,get方法符合要求。
  17. A❌ C 这道题是关于stream内部的运行顺序,每个对象的处理并不是并行的,banana结束过后才处理apple。peek方法可用在stream中端处理时debug

    1. sample

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      Stream<String> stream = Stream.of("banana", "apple", "orange")
      .filter(e -> e.length() > 5)
      .peek(e -> System.out.print(e + " "))
      .map(String::toUpperCase)
      .peek(e -> System.out.print(e + " "));

      System.out.print("OK");
      long count = stream.count();

      //result
      //OKbanana BANANA orange ORANGE

  18. ABC

  19. B allMatch方法相当于&&运算

  20. D

    1. flatMap是将stream平坦化的方法。
  21. F❌ D

    1. map接口新追加的merge方法有三个参数(key, value, BiFunction),第三个函数是当指定的键在map中存在,并且对应的value不为null时,才会被使用。
    2. 当key不存在时,直接将指定的键值对插入。
  22. C❌ B

    1. 将数据的集合变为一个的处理,在java中叫做リダクション,比如比较常见的reduction操作有count,max,min等等
    2. 减少操作是终端操作。
  23. D❌ ⭕️E

    1. reduce方法是可以通过开发者定义的reduction操作。reduce有3个重载。
  24. A 实现可变reduction操作的object叫做收集器(collector)Stream类的collect有以下两种

    1. collect方法1

      1
      <R, A> R collect(Collector<? super T, A, R> collector);

      collect方法2

    2. <R> R collect(Supplier<R> supplier,
                    BiConsumer<R, ? super T> accumulator,
                    BiConsumer<R, R> combiner);
    3. Collectors类提供了很多可变的reduction的static方法。

  25. D

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 Joe
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信