Java集合Map的clear與new Map區(qū)別詳解
對(duì)于clear與new Map的區(qū)別。我們首先來看一個(gè)例子,本例子是我在實(shí)際開發(fā)中遇到的,需求就是講map放入到list中,說白了就是list轉(zhuǎn)map,有兩種實(shí)現(xiàn)方式,分別是:
// 方案一Map<Integer, Integer> map1 = new HashMap<>();List<Map<Integer, Integer>> list1 = new ArrayList<>();for (int i = 0; i < 5; i++) { map1.clear(); map1.put(i, i * 2); list1.add(map1);}
// 方案二Map<Integer, Integer> map2 = null;List<Map<Integer, Integer>> list2 = new ArrayList<>();for (int i = 0; i < 5; i++) { map2 = new HashMap<>(); map2.put(i, i * 2); list2.add(map2);}
大家可以猜猜上面代碼執(zhí)行的結(jié)果。與你們猜想的一致么。
解釋:
方案一,我們只是把map.clear了(查看clear的源碼,clear的作用是把map里每個(gè)屬性設(shè)置為null,并把map的長度設(shè)置為0)。并沒有銷毀,map的指針還是存儲(chǔ)在list里面了,所以后面新add到list里面的東西都是同一個(gè)map,都是指向同一個(gè)map,list里面存儲(chǔ)的是map的指針;
方案二,不用我說了,每次創(chuàng)建新的map,每次都是不同的指針,
所以編碼的時(shí)候要注意了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 淺談python多線程和多線程變量共享問題介紹2. WML語言的基本情況3. react axios 跨域訪問一個(gè)或多個(gè)域名問題4. vue3?Error:Unknown?variable?dynamic?import:?../views/的解決方案5. python利用platform模塊獲取系統(tǒng)信息6. Python如何批量獲取文件夾的大小并保存7. python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作8. Python的Tqdm模塊實(shí)現(xiàn)進(jìn)度條配置9. CSS代碼檢查工具stylelint的使用方法詳解10. Python 多線程之threading 模塊的使用
