美文网首页
Guava Multimap 进行Java对象分类

Guava Multimap 进行Java对象分类

作者: vayci | 来源:发表于2018-02-02 17:20 被阅读0次

    一、背景

    查出一堆对象,根据对象的某个相同的属性进行分类放置

    二、一般方案

    定义一个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());
        }
    

    相关文章

      网友评论

          本文标题:Guava Multimap 进行Java对象分类

          本文链接:https://www.haomeiwen.com/subject/fnyezxtx.html