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

如何在包含列表对象作为值的映射上迭代,并使用Java8 Streams将这些对象作为单独的列表对象获取

冯元魁
2023-03-14

有两类:

public class Company {
    
    String name;
    int regId;
    List<Employee> employee;

    //getters and setters
    //constructor
}
public class Employee {
    int id;
    String name;
    // getters and setters
    // constructor
}

对此有什么建议吗?

共有1个答案

蔚桐
2023-03-14

你可以做:

Map<String, Company> stringCompanyMap = new HashMap<>();
stringCompanyMap.put("Dsa", new Company("Nike", 1, Arrays.asList(
        new Employee(1, "Jordan"),
        new Employee(2, "Mike"))));
stringCompanyMap.put("Sd", new Company("Adidas", 1, Arrays.asList(
        new Employee(3, "Tyson"),
        new Employee(4, "Russel"))));

List<Employee> allEmployees = stringCompanyMap.values().stream()
        .flatMap(company -> company.employee.stream())
        .collect(Collectors.toList());

System.out.println(allEmployees);

产出:

[Employee(id=3, name=Tyson), Employee(id=4, name=Russel), Employee(id=1, name=Jordan), Employee(id=2, name=Mike)]
 类似资料:
  • 假设数据采集对象如下所示 我需要尝试使用java lambda函数在引擎匹配时获取匹配的品牌对象。 现在,如果发动机类型匹配,我需要获得品牌名称。例如,如果搜索引擎1,则需要返回Honda对象。 下面是代码示例:类Vehicle: 类别品牌: 类车: 类引擎: 班级主修: 以上是我尝试的代码。之前,我的目标是使用授权子对象列表中的关键字进行过滤。 现在,我使用它作为一个键,以父对象或品牌对象作为值

  • 给定: 我想把所有的车都标出来。将轮胎分为单独的轮胎板。我知道我可以做一个

  • 注意: 我不需要创建java对象,因为我只需要检查一些值,但我没有找到任何东西来取消将它们作为通用对象或树或任何东西。像杰克逊的 JsonNode。如果可能的话,让我知道,这样我就可以避免所有这些混乱的对象来映射一切。 现在的问题是: 我不得不解组一个简单的xml,但是结果总是空的。我已经尝试了不同的注释,但是如果它们没有失败,结果就是null。 这似乎是这个问题的相同情况,但使用相同的注释是行不

  • 我有“MainClass”类的对象列表,它包含“Question”类的对象列表,它包含Option类的对象列表。如何按“Id”对“MainClass”类列表进行排序,以及按“Id”对“Option”类列表进行排序? 假设,

  • 假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?