2011-04-13 27 views
5

Bunu yapmak için daha iyi bir yol var mı, o yüzden orada 50 ".add()" lere sahip olmak zorunda değilim? Virgülle ayrılmış bir liste veya bir şey gibi (JavaScript dizileri gibi). gibiJava 5 HashSet'e aynı anda birden çok alan ekleyin

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"); 

şey:

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

cevap

8

HashSeta constructor taking a Collection sahiptir. Arrays#asList(), bağımsız değişkenleri varargs olarak alır ve List (Collection) değerini döndürür. aşağıdaki gibi Yani, bunu yapabilirdi:

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

Bazı özellikleri dosya ya da gerekmez, böylece bir veritabanında kod bir veya iki çizgilerle yüklendiğini onlara sahip ancak daha mantıklı hepsini Java'da kodlayın.

3

Daha sonra, tüm devletlerle statik String[] sahip dizi tekrarlayabilirsiniz: Bu "foreach" yapı 1.5 veya 1.6 kaldığım takdirde hatırlamıyorum

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

....

Eğer mükemmel Google Guava library kullanarak fantezi
+2

[1.5] (http : //download.oracle.com/javase/1.5.0/docs/guide/language/foreach.html). – BalusC

5

, şunları kullanabilirsiniz:

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

Bu harika. –

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