簡體   English   中英

清除HashMap中List類型的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM