2016-07-30 58 views
0

只有滿足條件時,是否有任何方法可以將值(或更改密鑰的值)添加到密鑰?只有在散列表條件下才將值添加到密鑰

我的意思是,是這樣的:

myHashMap.add(key, if(true){//add this value} else {//add a different value}); 
+1

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html – user1803551

+0

@ user1803551這不回答我的問題。 –

+0

哦,它的確如此。它向你展示了你需要做的所有事情,以實現你想要的。它比你得到的答案更詳細。 – user1803551

回答

4

是,使用if-else

if (condition){ 
    myHashMap.put(key, value); 
} else { 
    myHashMap.put(key, otherValue); 
} 

如果硬要使其短期使用三元運算(請參閱Oracle tutorial的條件運算符部分):

myHashMap.put(key, condition ? value : otherValue); 
+0

謝謝。第二個解決方案就是我所期待的。 –

+2

@hello_its_me是的,它爲你工作;但風格非常糟糕。至少你應該把這個東西包裝成一個單獨的方法。重點不在於編寫**最短的**代碼;成爲一名優秀的程序員是關於編寫最**可讀的**代碼。這是關於學習和理解概念... – GhostCat

+0

@hello_its_me作爲ghostcat提到,你應該小心編寫永遠不會被讀取的代碼。 –

1

不完全是,你將不得不做這樣的事情:

// Assuming a boolean value is returned 
if (myHashMap.get(key)) { 
    myHashMap.put(key, value); 
} else { 
    myHashMap.put(key, differentValue); 
} 
+0

'add'不是'Map'的方法 – Dici

+1

哦哇,哎呀!固定。 –

1

只是爲了釘到Reut的答案,如果你想對某個值已經在地圖上進行操作,還有地圖#計算作爲Java的8:

Map<String, String> example = new HashMap<>(); 
//pretending we have values... 
example.compute("My Key", (key, oldValue) -> oldValue == null ? "New" : "Read"); 
+0

是的,我一直在檢索舊值並進行編輯。不使用這種方式,它看起來更整齊。謝謝! –

相關問題