[英]Clear values of type List in a HashMap
我正在使用HashMap來存儲鍵/值對。 鍵包含重復項,值為List。 我想在新密鑰到來時清除值列表。 到目前為止我的代碼是
Map<Integer, List<Integer> > bandsMap = new HashMap< Integer, List<Integer> >();
List<Integer> erfcn = new ArrayList< Integer >();
for(int i=0 ; i<frequencies.length; i++)
erfcn.add(frequencies[i]);
bandsMap.put( band_number, erfcn);
我在這里做的是我有一個頻率數組,我將數組的值添加到我的列表,然后將列表放到我的地圖。 當band_number相同時,它工作正常。
假設對於band_number = 20
的前10次,它只是在列表中添加新值,並在我的Map中添加key=20
的列表。 但是當新密鑰到達時,它也會將新內容添加到舊密鑰中。
是否有可能檢查密鑰是否與以前的密鑰相同,然后只需將列表放到地圖上,否則先清除List然后將其添加到Map?
謝謝
聽起來你只是一次創建erfcn
列表。 每個bandsMap.put
調用都將相同的列表對象與所有不同的鍵相關聯。 相反,您需要為每個 band_number創建一個new
列表。 如果該密鑰存在,您還需要重新使用該密鑰的現有列表。
所以,移動這一行:
List<Integer> erfcn = new ArrayList< Integer >();
遠離bandMap的聲明。 直接在添加頻率的函數內聲明它,如下所示:
List<Integer> erfcn = bandsMap.get(band_number);
if (erfcn == null) erfcn = new ArrayList<Integer>();
您可以從Map
獲取密鑰的List
並附加到它。
List<Integer> erfcn = bandsMap.get(band_number);
如果get(band_number)
返回null
,則創建一個新List
。
if (erfcn == null) {
erfcn = new ArrayList<>();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.