美文网首页java8题库
测验:流的映射

测验:流的映射

作者: 草叶oo0 | 来源:发表于2019-08-26 19:45 被阅读0次

(1)给定一个数字列表,如何返回一个由每个数的平方构成的列表呢?例如,给定[1, 2, 3, 4, 5],应该返回[1, 4, 9, 16, 25]。
答案:你可以利用map方法的Lambda,接受一个数字,并返回该数字平方的Lambda来解决这个问题。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squares = numbers.stream()
                                .map(n -> n * n)
                                .collect(toList());

(2)给定两个数字列表,如何返回所有的数对呢?例如,给定列表[1, 2, 3]和列表[3, 4],应该返回[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]。为简单起见,你可以用有两个元素的数组来代表数对。
答案:你可以使用两个map来迭代这两个列表,并生成数对。但这样会返回一个Stream<Stream<Integer[]>>。你需要让生成的流扁平化,以得到一个Stream<Integer[]>。这正是flatMap所做的:

List<Integer> numbers1 = Arrays.asList(1, 2, 3);
List<Integer> numbers2 = Arrays.asList(3, 4);
List<int[]> pairs = numbers1.stream()
                                .flatMap(i -> numbers2.stream()
                                                      .map(j -> new int[]{i, j})
                                ).collect(toList());

(3)如何扩展前一个例子,只返回总和能被3整除的数对呢?例如(2, 4)和(3, 3)是可以的。
答案:你在前面看到了,filter可以配合谓词使用来筛选流中的元素。因为在flatMap操作后,你有了一个代表数对的int[]流,所以你只需要一个谓词来检查总和是否能被3整除就可以了:

List<Integer> numbers1 = Arrays.asList(1, 2, 3);
List<Integer> numbers2 = Arrays.asList(3, 4);
List<int[]> pairs = numbers1.stream()
                            .flatMap(i -> numbers2.stream()
                                                   .filter(j -> (i + j) % 3 == 0)
                                                   .map(j -> new int[]{i, j})
                            ).collect(toList());

来源:java8实战

相关文章

  • 测验:流的映射

    (1)给定一个数字列表,如何返回一个由每个数的平方构成的列表呢?例如,给定[1, 2, 3, 4, 5],应该返回...

  • 流映射map

    举例说明有二箱鸡蛋,每箱5个,现在要把鸡蛋加工成煎蛋,然后分给学生。 map做的事情:把二箱鸡蛋分别加工成煎蛋,还...

  • 《程序设计课》第20181010期  ——一个会写诗的程序员

    一切皆是映射.映射即流.流即函数. 3个计算模型:赋值模型循环和递归异步和并行 1个结构: 树结构.队列,栈,数组...

  • Java8实战读书笔记3-使用流

    一、流的常用操作 筛选:filter、distinct 截断、跳过:limit、skip 映射:map 流的扁平化...

  • Stream 之数值流

    将对象流映射为数值流 代码: 输出: 生成一个数值范围流 代码: 输出: 参考资料:https://www.cnb...

  • Java8-流-使用流

    筛选和切片 映射 查找和匹配 规约 数值流 构建流 欢迎访问本人博客:http://wangnan.tech 筛选...

  • Stream流的使用

    Stream流的使用 本篇主要讲解JDK8中 Stream流的使用, 包括如何 筛选 、切片、映射 、查找、匹配 ...

  • flink sql

    SQL的很多概念无法直接映射到流计算,这就是在流计算上定义SQL的难点。 为了在流计算上定义SQL,我们需要引入几...

  • 《人格谜题》第五章 人格评估1(一)人格测验及其结果

    本章主要讲了人格评估的本质、测验行业、人格测验(S型数据人格测验与B型数据人格测验、投射测验、客观性测验) 客观性...

  • ps流解析

    参考协议iso13818-1 pes-2.4.3.6 码流 映射流部分解析

网友评论

    本文标题:测验:流的映射

    本文链接:https://www.haomeiwen.com/subject/ycadectx.html