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

在Java8中将列表收集到Map中

冷涵忍
2023-03-14

我想迭代一个对象列表。每个对象都包含一些对象的变量。更具体地说:

public class KCenterDocumentMapping {
    private DigitalFileCategory digitalFileCategory;
    private DocumentType documentType;
    private KCenterCategory kCenterCategory;
    private KCenterFolder kCenterFolder;
    private KCenterDocumentType kCenterDocumentType;

    //setters & getters
}

我的名单是:

List<KCenterDocumentMapping> allMappings = db4.retrieveMapping();

所需的映射结构是:

Map<DigitalFileCategory, Map<DocumentType, KCenterDocumentMapping>> kCenterDocumentMappingMap = new HashMap<>();
Map<DigitalFileCategory, Map<DocumentType,KCenterDocumentMapping>> grouping = kCenterDocumentMappingList.stream()
                .collect(Collectors.groupingBy(KCenterDocumentMapping::getDigitalFileCategory,
                        Collectors.mapping(KCenterDocumentMapping::getDocumentType, this)));

共有1个答案

翟越
2023-03-14
Collectors.mapping(KCenterDocumentMapping::getDocumentType, this) // this?

我想你要找的是:

Collectors.toMap(KCenterDocumentMapping::getDocumentType,
         Function.identity())

Collectors.Mapping接受函数收集器作为输入;看起来不像收集器

 类似资料:
  • 我有一个HashMap,我需要使用一些函数对其进行筛选: 上述代码中的错误是变量的声明类型。应该是而不是。 所以现在的功能代码是:

  • 我有以下代码: 此代码不工作,编译错误是: 方法无法应用于给定类型 必选:

  • 我有一个映射,它包含日期作为键和(另一个字符串作为键和列表作为值的映射)作为值。,我想填充另一个将String作为键和double作为值的映射。FlexiServer的内容包括 因此,基本上,我想首先迭代外部映射以获得内部映射,然后迭代内部映射以获得FlexiServers列表,并填充新的映射,其中服务器号作为键,数量列表作为值。我如何使用Java8流来实现这一点呢? 我尝试使用for循环,但我希

  • 例如,我有一个类包含name和surname字段。 我想从的中收集一个的(名字和姓氏都在一起),但似乎无法对每个列表使用两次map或无法对每个列表使用两次stream。 我做错了什么?

  • 我想过滤map列表的元素,然后在Java8+中返回map 在getEmployeeByDepartment方法中,对于映射中的每个条目,使用下面的filterEmployee方法在映射值的列表中筛选employee,返回的map1将包含映射,以便 <“tech”,list2.add(emp6)>//emp6的filterEmployee返回true 我在下面试过这个和那个,但没有成功

  • 我有一个嵌套的映射,其中key是员工名称,values是另一个映射,其中key是公司名称,value是经验年数,如下所示 现在我的函数应该返回一个映射,以员工姓名为键,以总经验为值。我如何使用java流(在单个流中)做到这一点