有没有更好的方法来做到这一点所以我不必在那里有50个“.add()”?就像逗号分隔的列表或某些东西(如JavaScript数组)。
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", "...");
答案 0 :(得分:15)
HashSet
有a constructor taking a Collection
。 Arrays#asList()
将参数视为varargs并返回List
(Collection
)。所以,你可以这样做:
validStates = new HashSet<String>(Arrays.asList("AL", "AK", ".."));
将它们放在某个属性文件或DB中,然后通过一行或两行代码加载它们就更有意义了,这样就不需要用Java对它们进行硬编码。
如果您使用的是Java 8+,则可以使用Stream#of()
。
validStates = Stream.of("AK", "AL", "..").collect(Collectors.toSet());
答案 1 :(得分:7)
如果您喜欢使用优秀的Google Guava library,可以使用:
Set<String> validStates = Sets.newHashSet("AL", "AK", "...");
答案 2 :(得分:3)
你可以拥有一个包含所有状态的静态String[]
,然后迭代数组:
String states[] = {"AL","AK","AZ","AR",...etc...};
for (String currState : states) {
validStates.add(currState);
}
我不记得这个“foreach”构造是否出现在1.5或1.6 ......
答案 3 :(得分:2)
HashSet<String> hs = Sets.newHashSet("abc","xyz");