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

嵌套流java 8[复制]

仉俊能
2023-03-14

正在尝试为此使用Java8流

 HashMap<String,Games> groupGames = new HashMap<String,Games> ();
 for(Groups group: groups){
    for(int groupId : group.getGroupId){
          groupGames.put(groupId, group.getGame());
    }
 }

这很好,但我想使用java8stream来实现同样的功能。

这是我为小溪准备的

public void toStream(List<Group> group){
    group.stream().map(groups -> groups.getGroupIds())
            .flatMap(group -> groups.stream()).collect(Collectors.toList());
}

我很难把游戏中的每个groupId都放到hashmap
我可以将GroupID列表展平

共有1个答案

史谦
2023-03-14
 groups.stream()
       .flatMap(x -> x.getGroupId().stream()
                    .map(y -> new AbstractMap.SimpleEntry<>(y, x.getGame())))
       .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (x, y) -> y));

如果您知道不会有重复项,则可以删除(x,y)中的最后一个参数-

 类似资料:
  • 我尝试在两个列表上循环,过滤嵌套列表,并使用java8特性将结果写回主对象。 因此,到目前为止,位置内部的子列表不会更改,这是显而易见的,因为流和收集确实会创建一个新列表,该列表不会写回位置对象中。所以我的问题是,如果有一种方法可以调用位置对象的setSubList(...)方法并将新列表写入其中。 感谢

  • 问题内容: 我有一个对象A的列表。此列表中的每个对象A都包含对象B的列表,而对象B包含对象C的列表。对象C包含一个属性名称,我想使用它使用Java 8进行过滤。 如何使用流在Java 8中编写以下代码以避免嵌套循环: 问题答案: 您可以使用两个,然后使用a,然后可以选择第一个,或者如果没有结果返回:

  • 我有一个对象列表A。此列表中的每个对象A都包含对象B的列表,对象B包含对象C的列表。对象C包含一个属性名称,我想使用java 8进行过滤。 如何使用流在java8中编写下面的代码以避免嵌套循环:

  • 我试图理解新的Java8流,并且花了好几天的时间在Java8流中的集合上传输嵌套的foreach循环。 是否可以重构以下嵌套的foreach循环,包括Java-8-Streams中的if条件? 如果是,它会是什么样子。 非常感谢你的帮助。 溴

  • 我有一个对象的集合,每个对象都有一个元素的集合,例如: 如何使用Java 8函数式编程来过滤和收集类型等于“a”的集合? 我尝试了以下方法: 但我得到以下错误: 变量'filteredChildren'初始值设定项'parents。stream()。forEach(p- 如何按类型筛选嵌套集合并收集它们?