是否有用于状态名称查找/查找的Java API或快捷方式?
我正在编写一个程序,它接受一个字符串,一个州名(例如纽约),并输出相应的缩写(例如NY)。我的程序考虑了所有50个州,所以我的第一个想法是使用大量的是否有用于状态名称查找/查找的Java API或快捷方式?,java,api,if-statement,Java,Api,If Statement,我正在编写一个程序,它接受一个字符串,一个州名(例如纽约),并输出相应的缩写(例如NY)。我的程序考虑了所有50个州,所以我的第一个想法是使用大量的if/else if语句,但现在我想一定有更好的方法…更快的方法…没有这么多看似冗余的代码 片段: if (dirtyState.equalsIgnoreCase("New York")) { cleanState = "NY"; } else if (dirtyState.equalsIgnoreCase("Maryland
if/else if
语句,但现在我想一定有更好的方法…更快的方法…没有这么多看似冗余的代码
片段:
if (dirtyState.equalsIgnoreCase("New York")) {
cleanState = "NY";
} else if (dirtyState.equalsIgnoreCase("Maryland")) {
cleanState = "MD";
} else if (dirtyState.equalsIgnoreCase("District of Columbia")) {
cleanState = "DC";
} else if (dirtyState.equalsIgnoreCase("Virginia")) {
cleanState = "VA";
} else if (dirtyState.equalsIgnoreCase("Alabama")) {
cleanState = "AL";
} else if (dirtyState.equalsIgnoreCase("California")) {
cleanState = "CA";
} else if (dirtyState.equalsIgnoreCase("Kentuky")) {
cleanState = "KY";
// and on and on...
是否有一个API可以使这个过程更简单?也许是一条捷径
非常感谢您的反馈,并提前感谢=)您可以使用允许您使用不区分大小写的自定义比较器的。它看起来是这样的:
Map<String, String> states = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
states.put("New York", "NY");
states.put("Maryland", "MD");
//etc.
可以使用允许使用不区分大小写的自定义比较器的。它看起来是这样的:
Map<String, String> states = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
states.put("New York", "NY");
states.put("Maryland", "MD");
//etc.
最好抓取一个文件并将其放入属性文件中,如:
New York=NY
Maryland=MD
District of Columbia=DC
Virginia=VA
然后在循环中加载内容,并在其条目上循环(它扩展):
最好抓取一个文件并将其放入属性文件中,如:
New York=NY
Maryland=MD
District of Columbia=DC
Virginia=VA
然后在循环中加载内容,并在其条目上循环(它扩展):
如果您使用的是Java 7,则可以在switch语句中使用字符串,例如:
switch (dirtyState.toLowerCase())
{
case "new york": cleanState = "NY"; break;
case "maryland": cleanState = "MD"; break;
// so on...
}
如果您使用的是Java 7,则可以在switch语句中使用字符串,例如:
switch (dirtyState.toLowerCase())
{
case "new york": cleanState = "NY"; break;
case "maryland": cleanState = "MD"; break;
// so on...
}
您可以使用枚举:
public enum State {
AL("Alabama"), CA("California"), NY("New York");
private State(String name) {
this.name = name;
}
private String name;
static String findByName(String name) {
for ( int i = 0; i != values().length; ++i ) {
if ( name.equalsIgnoreCase(values()[i].name))
return values()[i].toString();
}
throw new IllegalArgumentException();
}
}
public class StateTest {
public static void main(String[] args) {
String name = "New York";
System.out.println(name + ": " + State.findByName(name));
}
}
您可以使用枚举:
public enum State {
AL("Alabama"), CA("California"), NY("New York");
private State(String name) {
this.name = name;
}
private String name;
static String findByName(String name) {
for ( int i = 0; i != values().length; ++i ) {
if ( name.equalsIgnoreCase(values()[i].name))
return values()[i].toString();
}
throw new IllegalArgumentException();
}
}
public class StateTest {
public static void main(String[] args) {
String name = "New York";
System.out.println(name + ": " + State.findByName(name));
}
}
好主意,但我该如何编码呢?我会将列表(作为csv)放在prop文件中吗?我编辑了答案以添加一个工作示例。好主意,但我该如何编写代码呢?我会把列表(作为csv)放在道具文件中吗?我编辑了答案以添加一个工作示例。我也喜欢这种方式,谢谢!我也喜欢这种方式,谢谢!