2014-03-03 67 views
1

我想傳遞一個包含密鑰的地圖和值是列表視圖, 這2個方法是在得到從2方法參數從java中的方法中獲取參數值的最佳做法?

Map<String, List<String>> mMap; 

public static void add(Map<String, List<String> map) { 
    mMap = map; // direct get and assign to map object 
} 

public static void add(Map<String, List<String> map) { 
    try { 
     //Copies all of the mappings from the specified map to this map 
     mMap.putAll(map); 
    } catch (Exception e) { 
    } 
} 

地圖一個很好的做法是正確的方式將map參數的值賦給我們新的Map對象?

+0

一號方法取代舊的值,如果你想這樣.. – Batty

+0

謝謝你guyz所有的信息你給我! –

回答

0

首先,你應該考慮的是,當你傳遞一個對象的方法,如果你改變它那個方法裏面,這些變化將影響到參數,因此,它是圍繞這一切。如果您想改變設定值(映射在這裏)裏面的方法,你應該使用第一種方式,如果(可能在大多數情況下),你不希望你的參數(圖)裏面的方法,只是改變想要使用裏面的值你應該使用第二種方法。

順便說一句,我用should爲您提供的選項,儘管還有其他方法,但理念是相同的。

3

你的第一種方法不是一個添加,而是一個替換,所以第二種方法是更好的方法。但第二個將失敗,因爲你的對象沒有被初始化,因此爲空。

0

的所有靜態的東西首先是不是最好的,在所有使用(性能 - 可能較低)。 第二種方法比較好。

public void add(Map<String, List<String> map) 
{ 
    try 
    { 
     //Copies all of the mappings from the specified map to this map 
     mMap.putAll(map); 
    } 
    catch (Exception e) 
    { 
    } 
0

直接指定集合被認爲是不好的做法。原因是,如果你這樣做了,可能有人可以改變班級以外的地圖內容,而這些內容沒有任何機會知道變化。所以,你的類的功能可能會變得不一致甚至引發異常,因爲地圖可以在你的類的處理過程中或事件之間進行更改。

0

您可以使用此實現:Guava Multimap

番石榴已經是各種各樣的項目標準庫。

相關問題