HashMap存儲(chǔ)List不覆蓋方法——HashMap存儲(chǔ)引用

相信很多時(shí)候都會(huì)有這樣的需求,HashMap存儲(chǔ)一個(gè)list,然后需要在list中添加元素,而HashMap的put方法又會(huì)覆蓋value,導(dǎo)致我們經(jīng)常這樣去寫:


      
       Map<Long , List<String>> catalogIdMap = new HashMap<>();
      categoryCatalogMapList.forEach(item ->{
          //創(chuàng)建list,用于重新put
          List<String> tmp = new ArrayList();

            tmp.add(item.getCode());
            
            if(catalogIdMap.containsKey(item.getCatalogId())){
                //key下有value的情況下,先取出list
                tmp.addAll(catalogIdMap.get(item.getCatalogId()));
            }
            
            catalogIdMap.put(item.getCatalogId(),tmp);

        });

這種方式需要去新建一個(gè)List,需要浪費(fèi)空間,看起來(lái)也不是很優(yōu)雅,然后決定優(yōu)化下,有了下面的代碼:

        Map<Long , List<String>> catalogIdMap = new HashMap<>();

        categoryCatalogMapList.forEach(item ->{
     
            if(catalogIdMap.containsKey(item.getCatalogId())){
                //由于HashMap存的是list的引用,只需要直接add
                catalogIdMap.get(item.getCatalogId()).add(item.getCode());
            }else{
                catalogIdMap.put(item.getCatalogId(),new ArrayList<String>(){ {add(item.getCode());} } );
            }

        });

實(shí)現(xiàn)的效果一樣,由此可見HashMap存的list只是引用。
沒有新建List,看起來(lái)也優(yōu)雅不少。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容