假设结构Pay
具有属性:category
,location
,department
,sum
。
拥有这样的实体的集合,我想通过category
和location
对它进行分组,以获得这样的结构:
category - location - collection of Pays
有一个Guava Multimaps.index()函数,但它只适用于一级分组。我需要2 +。
这个结构的类型并不重要 - 有些Map<Map<Map>>
实现或其他。
我只是不想编写多次迭代代码。希望有一个这样的操作库。你知道吗?
P上。 S.很好,如果适用于Java 7。
答案 0 :(得分:0)
我认为没有任何东西可以支持超过一个级别的开箱即用。也就是说,不应该进行多次迭代。你可能会这样做:
private Map<String, Multimap<String, Pay>> process(Collection<Pay> input) {
Map<String,Multimap<String, Pay>> result = Maps.newHashMap();
for(Pay pay:input) {
Multimap<String, Pay> multimap = result.get(pay.category);
if (multimap == null) {
multimap = ArrayListMultimap.create();
result.put(pay.category, multimap);
}
multimap.get(pay.location).add(pay);
}
return result;
}