簡體   English   中英

Java集 <String> 在HashMap中

[英]Java Set<String> in a HashMap

我有這個對象:

Map<Long, Set<String>> resourcesByID = new HashMap<Long, Set<String>>();

另一個:

Set<String> resources;

當我想將更多Set放入HashMap中時,它將覆蓋我之前放入的Set的元素。 為什么? 我該如何解決這個問題?

假設

Long id = 1234L;
Set<String> resources = ...;

如果要添加另一個從LongSet映射,則

resourcesById.put(id, resources);

如果要將String添加到現有映射

resourcesById.get(id).addAll(resources);

如果您未正確進行初始化,則可以簡化工作...

if (!resourcesById.containsKey(id)) {
    resourcesById.put(id, new HashSet<String>());
}
resourcesById.get(id).addAll(resources);
  • 第一個原因是您可能對每個集合使用相同的密鑰。
  • 第二個原因是,如果密鑰與每個密鑰(長整數)不同(您可能使用資源引用使用同一Set),則必須為每個密鑰創建Set的單獨實例。

如果key匹配,它將覆蓋以前的值,否則將不覆蓋。

(要么)

正如Thomas所言,如果您的集合是變異的,並且您要更新同一集合,是的,那么它可能會被覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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