2016-01-22 32 views
0

所以這就是我的情況:Java:根據變量訪問正確的地圖而不使用「if」

我有一個獲取String和一堆其他信息的方法。 根據字符串的內容,我想將其他信息放入我擁有的兩個地圖之一中。就像這樣:

if (string.equals("A")) { 
    A.put[..] 
} else if (string.equals("B")) { 
    B.put[..] 
} 

但因爲這種情況發生在我的方法了幾下,我不希望使用的if/else每次都因爲冗餘。

Soo我想我需要的是某種對象/指針/參考,我可以指定地圖我想在開始時使用一次,然後將其用作佔位符。

+0

添加地圖所以...你想有一個條件語句,沒有實際條件語句? ... – Stultuske

+1

如果它只發生幾次,你最好保持原樣。 – AdamSkywalker

+0

@Stultuske我想要更少的條件語句,而不是沒有人。我認識到使用ctsts的答案。 –

回答

1

這就是爲什麼我們必須引用變量:

Map<?,?> map; 
if(string.equals("A")) 
    map = A; 
else if(string.equals("B")) 
    map = B; 
else 
    map = new HashMap<>(); 

工作正常。最後一行更像是對你的字符串進行錯誤檢查,並在你的方法完成後被垃圾回收(否則map可能不會被初始化,這將拋出一個NullPointer)。在此之後,您可以將所有內容放入地圖(感謝引用變量:-))。記住地圖只是對您的地圖A或B(或「無效」)的引用

+0

哇,我已經用Java寫了3年的東西,並不知道。對我感到羞恥。謝謝! –

1

看起來您想要地圖的地圖。

Map<String, Map<?, ?>> maps = new HashMap<>(); 

Map<?, ?> map = map.get(string); 
map.put[...]; 

,如果你想您可以根據需要使用

Map<?, ?> map = map.computeIfAbsent(string, HashMap::new);