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

在Java8中通过stream将带有list的list对象转换为map[duplicate]

轩辕季同
2023-03-14

我有以下几门课:

class A {
   String id;
   List<B> b;
}

class B {
   String id;
}

我有一个a的列表,我想将其转换为具有以下逻辑的映射:

List<A> aList;

Map<String, String> map; 

for (A a:aList)
{
   for (B b:aList.b)
   {
      map.put(b.id, a.id)
   }
}  

在一行流方法中做它的最好方法是什么?

谢谢Elad

共有1个答案

尉迟宣
2023-03-14

您可以从A类对象流式传输B类的每个列表,然后将ID组合收集到Map.Entry对象

Map<String,String> map = aList.stream()
                              .flatMap(al->al.getB()
                                             .stream()
                                             .map(bl-new AbstractMap.SimpleEntry<String, String>(bl.getId(), al.getId())))
                              .collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
 类似资料:
  • 我有V类的对象列表,我想创建一个相同V类的新对象。List中对象的一些属性在列表中是相同的,一些属性具有不同的值。我想创建新的对象V,它们具有公共属性,并且具有不同值的属性应该被求和并设置为对象V。 例如 我有如下列表。 我想要新的Sample对象,其值为 我怎样才能做到这一点?

  • 我有这个: 我想把这个(String类型的列表)直接投射到新的(类型)上,但不知道如何?

  • 我使用Java8和我有两个对象看起来像: Person类: 现在我想使用StreamJava8循环两个列表和比较。如果list persons中的任何对象等于persons1,我将创建新的list并设置新的值。例如:如果Person1(“1”,“F”)等于Person1(“1”,“A”),因为我使用id进行比较,我将Person1的名称设置为Person1。结果:Person(“1,”F“)并添加

  • 我是scala和Spark的新手,我有以下大小写类A ClassCastException:Scala.Collection.Mutable.WrappDarRay$OFRef不能强制转换为java.util.List 请帮忙。

  • 问题内容: 将a转换为a 的最佳方法是什么?只是迭代所有值并将它们插入列表中,还是我忽略了某些内容? 问题答案: 假设: