2017-05-02 58 views
0

我試圖使用包含HashMap其中關鍵是一個人的名字,StringHashSet包含自己喜愛的食物種類:
這就是我想出了:一個方法如何有不同數量的參數?

public void addMapEntry(string1, string2, string3) 
{ 
     favFood = new HashSet<>(); 
     favFod.add(string1); 
     favFod.add(string2); 
     favFod.add(string3); 
} 

這種感覺非常笨重,根本不是一種很好的方式,如果3種最喜歡的食物少了,該怎麼辦?或者更多?
這是做什麼更優雅的方式?

+6

在使用可變參數請看下圖:(https://www.tutorialspoint.com/javaexamples/method_varargs1.htm) – Logan

+3

傳遞'集合',並調用'favFood.addAll(集合)'。可變參數有自己的位置,但是它們有侷限性(例如,泛型會變得混亂;只能有1個可變參數;它們必須出現在參數列表的末尾)。 Effective Java 2nd ed第42項標題爲「明智地使用可變參數」。 –

+0

有點左邊的領域,但你也可以看看番石榴的multimap整個問題。 – biziclop

回答

3

使用varargs可能是在這種情況下最好的。

varargs允許該方法接受零個或多個參數。

public void addMapEntry(String key, String... foods) 
{  
     ... 
     ... 
     favFood = new HashSet<>(); 
     for (String item : foods) { 
      favFood.add(item); 
     } 
     ... 
     ... 
} 

或者,你可以創建一個ArrayList,所有的字符串添加到它,然後把它傳遞到addMapEntry方法。

相關問題