我有HashMap的這個樣子,如何更新HashMap中的鍵值?
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
我想在map
添加元素做之前,
- 要檢查
key
是否存在與否,我可以用得到它map.containsKey()
。 - 如果密鑰存在,我想檢查相應密鑰的
Set
的大小。 - 如果
size <= 1
我想在該集合中添加一個元素。
我有HashMap的這個樣子,如何更新HashMap中的鍵值?
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
我想在map
添加元素做之前,
key
是否存在與否,我可以用得到它map.containsKey()
。Set
的大小。size <= 1
我想在該集合中添加一個元素。我不會使用containsKey並獲取,因爲這意味着當你只需要一個查找時就有兩個查找。
private final Map<String,Set<String>> map = new HashMap<String,Set<String>>();
Set<String> set = map.get(key);
if(set != null && set.size() <= 1)
set.add(some$value);
與此唯一的問題是,該值將始終是null
除非你設置它的地方,所以你可能想要的是
private final Map<String,Set<String>> map = new HashMap<String,Set<String>>();
Set<String> set = map.get(key);
if(value != null)
map.put(key, set = new HashSet<String>());
if (set.size() <= 1)
set.add(some$value);
這是不尋常的有一組的最大大小2.這有什麼理由嗎?
我想爲一個鍵只存儲2個值...所以我設置了最大大小爲2。 – Vinesh
聽起來是這樣的:
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
Set<String> value = map.get("key");
if(value != null) {
if(value.size() <= 1) {
value.add("some value");
}
} else {
map.put("key", new HashSet<String>());
}
現在,無論是最後一點不好的措辭(例如,你需要更新與該鍵關聯的設置),或者你真的要更新的密鑰本身,在哪種情況下你可能不得不刪除它並添加一個新條目。
我知道OP要求它,但是如果value.size()與0進行比較會更有意義。但無論如何都有upvote;) –
@David格蘭特:你的意思是'== 0'而不是'<= 1'? – Tudor
@Tudor:好吧,我是個白癡。 :) –
您可以使用map.get(String key)從地圖獲取集合。
然後測試Set的大小。如果需要,請添加您的元素。
現在你可以用map.remove(String key)直接從map中移除舊的set,並用put(String,Set)重新插入它;
'if(map.containsKey(「x」)){Set s = map.get(「x」);如果(s.size()<= 1){s.add(「y」);}}'(哦,只是誤讀密鑰應該更新 - 爲什麼?!) –
爲什麼要更新密鑰?你不能也不應該這樣想 –