2014-04-02 90 views
0

我用省略號在我的功能就像一個功能:如何HashMap的值傳遞給

public static void test(int parameter1, HashMap... args) { 
     System.out.print("\n" + parameter1); 

} 

想直接打電話與HashMap中值這個函數是這樣的:test(2,{test1=test1, test=test})

我期望的最終方案是將不同的鍵值對傳遞給函數,並希望在函數內訪問它們。

test(2,key1=value1,key2=value2,key3=value3 ....等等)。可以建議任何數據類型而不是HashMap。

+1

沒有用於創建沒有 「捷徑」 語法這樣,儘管初始化塊可能是有用的。 (另外,你真的不想'''那樣。) – user2864740

+1

我不知道你的程序,但可能值得考慮使用Map接口而不是HashMap,也使用類型(比如Map 。 – user2424380

+0

用HashMap ... args實際上是傳遞HashMap [] args,我想這不是你想要的,你的語法看起來像Groovy,也許你應該看看http://groovy.codehaus。 org/ –

回答

1

在Java中,你可以像使用以下

test(2, new HashMap() {{put("test1", "test1"); 
         put("test", "test");}}); 
+0

創建匿名內部類通常不是一個好主意,它會編譯爲一個單獨的類文件並使用一些PermGen空間。使用流利的API實現構造HashMap的構建器模式可能是一個更好的主意。 –

3

省略號意味着你可以在許多HashMaps這樣的傳球。我不認爲這是你打算做的。 你可以傳入整個HashMap,如果這是你想要的。或者你可以從HashMap中獲取值,並將其傳入。但是如果你需要鍵/值對,那麼最好只傳入整個HashMap。

0

你的函數(使用String類型):

private static void test(final Pair<String, String>... args) { 
    for (Pair<String, String> p : args) { 
     System.out.printf("%s=%s\n", p.getKey(), p.getValue()); 
    } 
} 

一個例子電話:

test(new Pair<String, String>("test1", "test1"), 
    new Pair<String, String>("test", "test") 
); 

這個例子的輸出:

test1=test1 
test=test