Guava Multimap 进行Java对象分类
2018-02-02 本文已影响0人
vayci
一、背景
查出一堆对象,根据对象的某个相同的属性进行分类放置
二、一般方案
定义一个map,以要分类的属性值作为key
Map<String,List<MyElement >> myClassListMap = new HashMap<String,List<MyElement>>();
放的时候,若map不存在则创建,若map存在,则将对象放入map value的list中去。
void putMyElement(String key, MyElement element) {
List<MyElement > myClassList = myClassListMap.get(key);
if(myClassList == null) {
myClassList = new ArrayList<object>();
myClassListMap.put(key,myClassList);
}
myClassList.add(element);
}
取的时候
myClassListMap.get("某个type");
三、Multimap方案
创建一个Multimap,key为要分类的属性值 value为对象
Multimap<String, MyElement > multiMap = ArrayListMultimap.create() ;
然后,往里面扔就可以了
for(MyElement element: allElementList) {
multiMap.put( element.getType(), element) ;
}
取的时候
//我已经把所有类型放入typeMap中,此map中value中为element的type。
//当然,直接操作multiMap也是可以的
for (Map.Entry<String, String> entry : typeMap.entrySet()) {
Collection<MyElement> childElementList = multiMap.get(entry.getValue());
}