从对象列表到基于Java8或Guava将对象及其键和值分组
我期待着将列表转换为地图从对象列表到基于Java8或Guava将对象及其键和值分组,java,lambda,java-8,guava,Java,Lambda,Java 8,Guava,我期待着将列表转换为地图 List到map的地图我想你就在附近。我只想: Map<String, List<Element>> map = elements.stream() .collect(Collectors.groupingBy(e -> ((EmpKey) e.getObjectKey()).getTenantId())); Map Map=elements.stream() .collect(Collectors.groupingBy(e->(
List
到map的地图我想你就在附近。我只想:
Map<String, List<Element>> map = elements.stream()
.collect(Collectors.groupingBy(e -> ((EmpKey) e.getObjectKey()).getTenantId()));
Map Map=elements.stream()
.collect(Collectors.groupingBy(e->((EmpKey)e.getObjectKey()).getTenantId());
我想你就在附近。我只想:
Map<String, List<Element>> map = elements.stream()
.collect(Collectors.groupingBy(e -> ((EmpKey) e.getObjectKey()).getTenantId()));
Map Map=elements.stream()
.collect(Collectors.groupingBy(e->((EmpKey)e.getObjectKey()).getTenantId());
您真的想在这里使用多重映射。它基本上是一个键到值集合的映射,有关更详细的描述,请阅读
在您的情况下,您可以使用完全符合您要求的方法:
ListMultimap<String, Element> multimap =
Multimaps.index(elements, e -> ((EmpKey) e.getObjectKey()).getTenantId());
// get your elements under a key:
List<Element> elements = multimap.get("someTenantId");
// view Multimap as plain Map
Map<String, Collection<Element>> mapOfCollections = multimap.asMap();
Map<String, List<Element>> mapOfLists = Multimaps.asMap(multimap);
ListMultimap多重映射=
索引(元素,e->((EmpKey)e.getObjectKey()).getTenantId());
//将元素置于一个键下:
List elements=multimap.get(“sometentatid”);
//将多重贴图视为普通贴图
mapOfCollections=multimap.asMap();
Map MapOfList=Multimaps.asMap(multimap);
如果不使用番石榴,您可以使用,请参阅Federico Peralta Schaffner的答案。您确实想在此处使用多地图(更具体地说)。它基本上是一个键到值集合的映射,有关更详细的描述,请阅读
在您的情况下,您可以使用完全符合您要求的方法:
ListMultimap<String, Element> multimap =
Multimaps.index(elements, e -> ((EmpKey) e.getObjectKey()).getTenantId());
// get your elements under a key:
List<Element> elements = multimap.get("someTenantId");
// view Multimap as plain Map
Map<String, Collection<Element>> mapOfCollections = multimap.asMap();
Map<String, List<Element>> mapOfLists = Multimaps.asMap(multimap);
ListMultimap多重映射=
索引(元素,e->((EmpKey)e.getObjectKey()).getTenantId());
//将元素置于一个键下:
List elements=multimap.get(“sometentatid”);
//将多重贴图视为普通贴图
mapOfCollections=multimap.asMap();
Map MapOfList=Multimaps.asMap(multimap);
如果不使用番石榴,您可以使用,请参阅Federico Peralta Schaffner的答案。您已经考虑过使用番石榴替换MapI阅读完您的“问题”-但是我不明白您的要求。请编辑它并添加您的问题。我如何进行分组,因为map的键是tenantId,它是EmpKey的一个属性。EmpKey是Element@Robert我对我的问题做了一些编辑,我正在尝试的是,我希望在体面的编码标准中做到这一点,save是以某种方式做到这一点的要求。这是我刚刚编辑的Ehcache的一部分,因为您已经考虑使用Guava replaceMapI阅读完您的“问题”-但是我错过了您的要求。请编辑它并添加您的问题。我如何进行分组,因为map的键是tenantId,它是EmpKey的一个属性。EmpKey是Element@Robert我对我的问题做了一些编辑,我正在尝试的是,我希望在体面的编码标准中做到这一点,save是以某种方式做到这一点的要求。这是我刚刚编辑的Ehcache的一部分,目的是简化它
//List<Element> to a map of Map<String,List<Element>
// where Map key String is tenantId which is in EmpKey
elements.stream().collect(Collectors.groupingBy(Element::getObjectKey))
I have to cast groupingBy(Element::(EmpKey)getObjectKey.getTenantId))
Map<String, List<Element>> map = elements.stream()
.collect(Collectors.groupingBy(e -> ((EmpKey) e.getObjectKey()).getTenantId()));
ListMultimap<String, Element> multimap =
Multimaps.index(elements, e -> ((EmpKey) e.getObjectKey()).getTenantId());
// get your elements under a key:
List<Element> elements = multimap.get("someTenantId");
// view Multimap as plain Map
Map<String, Collection<Element>> mapOfCollections = multimap.asMap();
Map<String, List<Element>> mapOfLists = Multimaps.asMap(multimap);