当前位置: 首页 > 面试题库 >

分区的目的是什么

公西翊歌
2023-03-14
问题内容

例如,如果我打算对某些元素进行分区,则可以执行以下操作:

Stream.of("I", "Love", "Stack Overflow")
      .collect(Collectors.partitioningBy(s -> s.length() > 3))
      .forEach((k, v) -> System.out.println(k + " => " + v));

输出:

false => [I]
true => [Love, Stack Overflow]

但是对我partioningBy来说只是的一个子案例groupingBy。尽管前者接受a Predicate作为参数,而后者接受a
,但Function我只是将分区视为常规分组功能。

因此,相同的代码执行的操作完全相同:

 Stream.of("I", "Love", "Stack Overflow")
       .collect(Collectors.groupingBy(s -> s.length() > 3))
       .forEach((k, v) -> System.out.println(k + " => " + v));

这也导致Map<Boolean, List<String>>

那么,有什么理由我应该partioningBy代替我groupingBy吗?谢谢


问题答案:

partitioningBy会始终返回包含两个条目的映射,一个用于谓词为true的条目,另一个用于为false的条目。两个条目都有可能有空列表,但它们将存在。

那是groupingBy不会做的,因为它只会在需要时创建条目。

在极端情况下,如果向您发送空流,partitioningBy您仍将在映射中获得两个条目,而groupingBy将返回一个空映射。

编辑:如下所述,Java文档中未提及此行为,但是更改它会带走partitioningBy当前提供的附加值。对于Java 9,这已经在规范中。



 类似资料:
  • 本文向大家介绍Kafka 分区的目的?相关面试题,主要包含被问及Kafka 分区的目的?时的应答技巧和注意事项,需要的朋友参考一下 分区对于 Kafka 集群的好处是:实现负载均衡。分区对于消费者来说,可以提高并发度,提高效率。

  • 我试着用谷歌搜索,但找不到答案。 取自ApacheSpark:map vs mapPartitions? RDD的map和mapPartitions有什么区别 map在每个元素级别运行正在使用的函数,而mapPartitions在分区级别运行该函数。 在这种情况下,什么是元素级别?这只是一行吗?

  • 和 你什么时候会一个比另一个好?

  • Maven目标和阶段之间的区别/联系是什么?它们是如何相互联系的?

  • 我的问题是,当没有密钥时,Spark如何重新分区?我无法进一步深入源代码,以找到它通过Spark本身的位置。 例如:调用这些行完全可以,但我不知道它实际上在做什么。是整行的散列吗?也许是DataFrame中的第一列?

  • 问题内容: 如果可能,如何举例说明如何实现JNDI的用法? 问题答案: JNDI是Java命名和目录接口。它用于分离应用程序 开发人员 和应用程序 部署 人员 的关注点。在编写依赖于数据库的应用程序时,无需担心用于连接该数据库的用户名或密码。JNDI允许开发人员为数据库命名,并依靠部署者将该名称映射到数据库的实际实例。 例如,如果您要编写在Java EE容器中运行的代码,则可以编写此代码来获取JN