当前位置: 首页 > 知识库问答 >
问题:

Java 8集合流-将列表转换为集合,转换结果[重复]

梁丘琛
2023-03-14

用以下方法对物体进行成像:

class A { List<B> getIds(){...} }
Set<B> ids = new HashSet<>();
for(A a : input){
  ids.addAll(a.getIds());
}
Set<List<B>> set = input.stream().map((a) -> a.getIds()).collect(Collectors.toSet());

共有1个答案

吴品
2023-03-14

您必须使用flatmap

input.stream()
    .map(a -> a.getIds())
    .flatMap(ids -> ids.stream())
    .collect(Collectors.toSet());

这将产生平坦的设置。

 类似资料:
  • 问题内容: 问题 与新HashSet(Collection)等效的Scala)相关,如何将Java集合(例如)转换为Scala集合? 我实际上是在尝试将Java API调用转换为Spring的 (返回a )成Scala不可变。因此,例如: 这似乎有效。欢迎批评! 问题答案: 您的最后一条建议有效,但您也可以避免使用: 请注意,默认情况下,由于提供了此功能。

  • 我试图通过将对象传递给“验证器”来验证库中的结果,其中验证器验证结果是否为空,并随后将传递的对象返回给调用方。例如: 调用方将调用以下内容: 我知道参数绑定发生在运行时,这就是编译器抛出这个错误的原因。我正试图避免使用显式类型创建多个方法,而宁愿捕获实现的所有类型。 在不上传或创建多个显式类型重载方法的情况下,有没有其他方法可以做到这一点?

  • 假设我有一个名为student的对象列表。对象Student的定义如下 在学生列表中,可以有多个具有相同studentName但不同CourseTaking的学生对象。现在我想把学生名单变成一张studentName和courseTaking的地图,如下所示 关键是studentName,而值是将同一学生的所有课程设置放在一起作为一个集合。我如何使用stream()&collection()来实现

  • 问题内容: 我正在尝试将一组转换为Python 2.6中的列表。我正在使用以下语法: 但是,我得到以下堆栈跟踪: 我怎样才能解决这个问题? 问题答案: 已经是清单了 你想要类似的东西吗 编辑:您的最后评论的输出 我想知道您是否做了这样的事情:

  • 现有两个名为getDetails(…)的方法 。一个需要至少一个必需参数,另一个需要一个集合(不验证集合的内容/大小)。 问题是集合有时会作为空传递,并且根据我的业务案例,我总是期望至少传递一个值。因此,我需要将该方法设为私有,它接受集合。 我计划将下面的方法作用域设置为private,这样调用者就不会使用零属性调用此方法。 调用方方法之一是将集合对象传递给下面的getDetails, id.ge

  • 问题内容: 我想将包含的字符串转换为字符列表和字符哈希集。如何在Java中做到这一点? 问题答案: 您将不得不使用循环,或创建一个像这样的集合包装器,该包装器可用于原始char数组(或直接用于字符串)。 这是一个类似字符串的包装器: 不过,这是一个不变的列表。如果您想要一个可变的列表,请使用: 与此类似,您可以为其他原始类型实现此功能。 请注意,通常不建议使用此功能,因为对于每次访问,您都将进行装