我有一个问题,但现在没有解决方案。我所拥有的是大约300个字符串,例如:
我要做的就是比较其中一个字符串是否被请求字符串并返回如下内容:
那么有什么好的解决方案吗?我不能使用java 1.7。只有1.6。
答案 0 :(得分: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 { }
块的人来说,这是一个静态初始值设定项,它对于填充静态变量(如地图)非常有用。这与insitance初始值设定项{ }
不同,后者是每个实例的预构造函数初始值设定项。
答案 1 :(得分:3)
您可以创建一个包含stringCode;stringValue
的CSV文件以便于维护,然后在应用程序启动时从该文件构建哈希表/地图。
这看起来像是:
USNEWYRK;USA, New York
USWSHGNT;USA, Washington
一旦映射了这些值,就应该很容易返回用户需要知道的任何内容。
答案 2 :(得分:0)
任何类型的哈希表/地图都应该有效。将密钥设为第一个字符串,将值设为第二个字符串。
顺便提一下,您可以在JSON字符串中输入所有键和值,并使用JSON阅读器转换为地图对象,而不是编写代码以单独输入每个键。
答案 3 :(得分:0)
根据你在评论中的解释,我可以建议你下一个决定。
看来,上面提到的文件名是某种缩写。您可以检查它们并标出一些经验规则,这些规则用于此名称。
例如,我们可以假设,每个名称都以国家的2个字符名称开头。这是第一个假设。接下来是,最后6个名字的字符是城市的缩写。
看来,这个城市缩写是使用这个简单的规则构建的: 如果城市名称超过6个字符,则从字符串末尾删除第一个元音字符。否则完成准备字符串。重复此操作,而准备好的字符串长度为6个字符。
总结一下,你需要有一组字符串:1)国家名称集; 2)城市名称集(或城市名称的地图,其中键是国家名称)。 使用上面提到的规则,您将尝试根据前2个字符中的国家/地区名称将每个城市名称与缩写进行比较。