HashMap實現相同key,對value的操作

關注 “弋凡”(YiFan)微信公衆號吧 記錄簡單筆記 做你的最愛

問題產生背景:需要按照月份得到相關對象

(此篇文章純屬個人看法)

比如來說:(按每一天來算)

1月第一天我睡了一天,1月第二天我吃了一天

2月玩了一個月,

3月每一天都在學習呀~

怎麼統計每個月都做了什麼

那麼對應數據庫中
在這裏插入圖片描述

有一種方法是按照時間來查詢然後把查詢出來的都存在Map集合中—這顯然也是一種方法 但是好像不是很智能的樣子感覺,問題你如何判斷時間來進行查詢吶?

於是乎有了這個問題

如何解決?

重新了HashMap的put方法

public class MHashMap<K,V> extends HashMap<K,V> {
    /*HashMap實現相同key,對value的不同操作存放在集合中*/
    @Override
    public V put(K key, V value) {
        V newV = value;
        List<V> list = new ArrayList<>();
        //   containsKey - -- 判斷是否包含指定的鍵名
        if(containsKey(key)){
            List v = (List)get(key);
            v.add(value);
            list = v;
        }else {
            list.add(newV);
        }
        return super.put(key,(V)list);
    }
}

controller 中

public ResultDTO<Plan> getPlans(){
     List<Plan> planList = planService.list();
     MHashMap<String,  Plan> hashMap = new MHashMap<>();
     ResultDTO<Plan> resultDTO = new ResultDTO<>();
     if(!StringUtils.isEmpty(planList)){
        for (int i = 0; i < planList.size(); i++) {
          hashMap.put(planList.get(i).getPGmtCreate()
                      .toString().split("-")[1],planList.get(i));
            }
            resultDTO.setMapObj(hashMap);
            resultDTO.setMsg("請求成功");
            resultDTO.setCode(200);
            return resultDTO;
        }else {
            resultDTO.setMapObj(null);
            resultDTO.setMsg("請求失敗");
            resultDTO.setCode(400);
            return resultDTO;
        }
    }

請求結果如圖所示

在這裏插入圖片描述
特此記錄
end —

快來關注“弋凡”微信公衆號吧

快來關注“弋凡”微信公衆號把

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章