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());
    }
上一篇下一篇

猜你喜欢

热点阅读