我有一个问题,但目前没有解决方案。我拥有的是大约 300 个字符串,例如:
- “美国纽约”;
- “USWSHGNT”;
我要做的是比较这些字符串之一是否被请求字符串并返回如下内容:
- “美国,纽约”;
- “美国,华盛顿”;
那么有什么好的解决方案吗?而且我不能使用java 1.7。只有1.6。
我有一个问题,但目前没有解决方案。我拥有的是大约 300 个字符串,例如:
我要做的是比较这些字符串之一是否被请求字符串并返回如下内容:
那么有什么好的解决方案吗?而且我不能使用java 1.7。只有1.6。
创建一个键到值的映射,然后只需查找第一个值作为键,它就会为您提供值。
或者,您可以创建一个枚举,其中枚举是键,枚举的 toString 是您的值。
对于这种情况,我更喜欢地图解决方案而不是枚举。
地图示例
public abstract class LocationHelper {
public static Map<String, String> locations = new HashMap<String, String>();
static {
//either put individual elements into the map or
//read in from external file etc.
}
}
在另一个类中,您可以通过执行以下操作来获取值。
System.out.println(LocationHelper.locations.get("USNWYRK"));
这将打印“美国,纽约”
注意对于不熟悉该static { }
块的任何人,这是一个静态初始化程序,它对于填充静态变量(如地图)很有用。这与一个实例初始化器不同,{ }
它是每个实例的预构造器初始化器。
您可以创建一个包含stringCode;stringValue
便于维护的 CSV 文件,然后在您的应用程序启动时从该文件构建一个哈希表/映射。
这看起来像:
USNEWYRK;USA, New York
USWSHGNT;USA, Washington
一旦这些值被映射,应该很容易返回用户需要知道的任何内容。
任何类型的哈希表/映射都应该有效。将键设为第一个字符串,将值设为第二个字符串。
顺便说一句,您可以在 JSON 字符串中输入所有键和值,然后使用 JSON 阅读器将其转换为地图对象,而不是编写代码单独输入每一个。