比较字符串并返回不同的字符串。

3
我有一个问题,但现在没有解决方案。我手头有大约300个字符串,例如:
  1. "USNEWYRK";
  2. "USWSHGNT";
我的任务是比较这些字符串中是否有请求的字符串,并返回如下结果:
  1. "美国,纽约";
  2. "美国,华盛顿";
那么有什么好的解决方案吗?并且我不能使用Java 1.7,只能使用1.6。

你是否对每个现有字符串都有“解码”(我的意思是一对,比如“USNEWYRK->美国,纽约”),或者你必须自动展开这些缩写? - Andremoniy
好的,我有一个 Android 应用程序,它正在从外部存储读取文件,文件名目前是这样的。因此,我想做一些事情,将使用该文件名并在某种列表、哈希映射、表中查找真实字符串。基本上将文件名转换为更可识别的字符串表示形式。 - copied
好的,实际上这个问题与Android无关。这是关于Java和算法的一个常见问题。 - Andremoniy
3个回答

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

这将打印出"USA, New York"

注意 对于不熟悉static { }块的人,这是一个静态初始化器,用于填充像maps这样的静态变量。这与实例初始化器{ }不同,后者是每个实例的预构造函数初始化器。


谢谢Jon提供的非常有用的信息,但我有一个疑问:为什么您要创建一个包装类而不是一个简单变量? - HMarioD
1
@HMarioD 在这种情况下,我使用了一个包装类,以防他需要在多个其他类中使用变量。但是,如果它只与单个类有关,则当然可以将其作为变量包含在该类中。我包含了类代码,因为它使我更好地展示了静态初始化程序。 - Jon Taylor
非常感谢,它像魔法一样运行!你的解决方案作为包装类正是我需要的! :) - copied

3
您可以创建一个包含“stringCode;stringValue”的CSV文件,以便于维护,然后在应用程序启动时从该文件中构建哈希表/映射表。
这应该是这样的:
USNEWYRK;USA, New York
USWSHGNT;USA, Washington

一旦这些值被映射,返回用户需要了解的信息就变得容易。

0

任何类型的哈希表/映射都可以使用。将第一个字符串作为键,第二个字符串作为值。

顺便说一下,您可以在JSON字符串中输入所有键和值,并使用JSON读取器将其转换为映射对象,而不是编写代码逐个输入每个键和值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接