2011-04-13 13 views
5

¿Hay una mejor manera de hacerlo así que no tengo que tener 50 ".add()" s allí? Como una lista separada por comas o algo así (como matrices de JavaScript).¿Agregar varios campos a Java 5 HashSet a la vez?

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

Algo así como:

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

Respuesta

8

El HashSet tiene a constructor taking a Collection. El Arrays#asList() toma argumentos como varargs y devuelve un List (que es un Collection). Por lo tanto, se puede hacer de la siguiente manera:

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

Se hace sin embargo más sentido tenerlos en el archivo algunas propiedades o en una base de datos que se cargan por una o dos líneas de código para que no es necesario codificarlos todos en Java.

3

Usted podría tener una estática String[] con todos los estados, a continuación, iterar sobre la matriz:

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

No recuerdo si este "foreach" constructo se produjo en 1.5 o 1.6 ....

+2

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

5

Si te apetece utilizando la excelente Google Guava library, puede utilizar:

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

Esto es asombroso. –

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