2011-04-13 48 views
5

有沒有更好的方法來做到這一點,所以我不必在那裏有50個「.add()」?像逗號分隔列表或其他內容(如JavaScript數組)。一次向Java 5 HashSet添加多個字段?

private static final Set<String> validStates = new HashSet<String>(); 

validStates.add("AL"); 
validStates.add("AK"); 
validStates.add("AZ"); 
validStates.add("AR"); 
validStates.add("CA"); 
validStates.add("CO"); 
validStates.add("CT"); 
validStates.add("DE"); 
validStates.add("DC"); 
validStates.add("FL"); 
validStates.add("GA"); 
validStates.add("HI"); 
validStates.add("ID"); 
validStates.add("IL"); 
validStates.add("IN"); 
validStates.add("IA"); 
validStates.add("KS"); 
validStates.add("KY"); 
validStates.add("LA"); 
validStates.add("ME"); 
validStates.add("MD"); 
validStates.add("MA"); 
validStates.add("MI"); 
validStates.add("MN"); 
validStates.add("MS"); 
validStates.add("MO"); 
validStates.add("MT"); 
validStates.add("NE"); 
validStates.add("NV"); 
validStates.add("NH"); 
validStates.add("NJ"); 
validStates.add("NM"); 
validStates.add("NY"); 
validStates.add("NC"); 
validStates.add("ND"); 
validStates.add("OH"); 
validStates.add("OK"); 
validStates.add("OR"); 
validStates.add("PA"); 
validStates.add("RI"); 
validStates.add("SC"); 
validStates.add("SD"); 
validStates.add("TN"); 
validStates.add("TX"); 
validStates.add("UT"); 
validStates.add("VT"); 
validStates.add("VA"); 
validStates.add("WA"); 
validStates.add("WV"); 
validStates.add("WI"); 
validStates.add("WY"); 

喜歡的東西:

validStates.add("AL", "AK", "..."); 

回答

8

HashSeta constructor taking a CollectionArrays#asList()將參數作爲varargs並返回List(這是一個Collection)。所以,你可以如下做到這一點:

validStates = new HashSet<String>(Arrays.asList("AL", "AK", "..")); 

這使得但是更有意義,讓他們在一些配置文件或在DB你通過代碼一行或兩行加載,這樣你就不需要使用Java對它們全部進行硬編碼。

3

你可以有一個靜態String[]與所有的國家,然後遍歷數組:

String states[] = {"AL","AK","AZ","AR",...etc...}; 
for (String currState : states) { 
    validStates.add(currState); 
} 

我不記得,如果這「foreach」結構來在1.5或1.6 ....

+2

[1.5](HTTP ://download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html)。 – BalusC 2011-04-13 19:46:46

5

如果你喜歡使用優秀Google Guava library,你可以使用:

Set<String> validStates = Sets.newHashSet("AL", "AK", "..."); 
+0

這太棒了。 – 2016-04-07 19:41:14

1
HashSet<String> hs = Sets.newHashSet("abc","xyz");