比较字符串,返回不同的字符串

问题描述:

我有一个问题,但现在没办法了。我拥有的是大约300个字符串,例如:比较字符串,返回不同的字符串

  1. “USNEWYRK”;
  2. “USWSHGNT”;

而我所要做的是,如果被请求这些字符串中的一个字符串,返回类似这样比较:

  1. “美国,纽约”;
  2. “USA,Washington”;

所以什么好的解决办法?而我不能使用Java 1.7。只有1.6。

+0

您是否对每个现有字符串进行了“解码”(我的意思是像“USNEWYRK - > USA,New York”这样的对,或者您必须自动解开缩写? – Andremoniy

+0

好吧,我拥有的是android应用程序从外部存储中读取文件和文件名称目前就是这样,所以我想做一些将使用该文件名的东西,并在某种列表,哈希映射表,表格中寻找真正的字符串,基本上将文件名转换为更多认识字符串表示 – copied

+0

好的,其实这个问题并没有涉及到Android,这是关于Java和算法的一个常见问题, – Andremoniy

创建地图一键值,然后只查找第一个值的键,它会给你的价值。

另外,您可以创建一个枚举,其中枚举是关键,枚举了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 { }块,这是一个静态初始化,它是用于填充静态变量如地图有用。这与电路初始化程序{ }不同,后者是每个实例的预构造函数初始值设定项。

+0

谢谢,我会尝试一下,有没有例子? – copied

+0

谢谢Jon非常有用,但我有疑问:为什么你做一个包装类而不是一个简单的变量? – HMarioD

+1

@HMarioD我在这个实例中使用了一个包装类以防万一他需要在多个其他类中使用变量。但是,如果它只会与单个类相关,那么它当然可以作为该类中的变量。我包含了类代码,因为它允许我更好地显示静态初始化器。 –

任何种类哈希表中/图应该工作。使钥匙成为你的第一个字符串,并把你的第二个字符串的值。

顺便说一句,你可以在一个JSON字符串输入所有键和值,并使用JSON读者转换为地图对象,VS编写代码单独进入每一个。

为了便于维护,您可以创建一个包含stringCode;stringValue的CSV文件,然后在应用程序启动时从此文件构建散列表/映射。

这看起来像:

USNEWYRK;USA, New York 
USWSHGNT;USA, Washington 

一旦这些值映射应该很容易返回无论用户需要知道。

根据评论你的解释,我可以建议你下一个决定。

看来,该文件,你上面提到的名字,是某种缩写。你可以检查它们并标出一些经验规则,这些规则用于这个名字。

例如,我们可以假设,每个名字都以2个字符的国家名称开头。这是第一个假设。接下来的一个是,最后的6个字符是城市的缩写。

看来,这个城市的缩写是用这个简单的规则构建的: 如果城市名称多于6个字符,那么从字符串结尾删除第一个元音字符。否则完成准备字符串。重复此操作,准备好的字符串变为6个字符。总结一下,你需要对字符串进行设置:1)设置国名; 2)一组城市名称(或城市名称的地图,其中关键是国家名称)。 使用上面提到的规则,您将尝试根据前2个字符中的国家名称,比较每个城市名称和您的缩写。

+0

虽然我同意这是一个很好的方法,但从他给出的两个例子来看,这是不可能的。 –

+0

我了解你,但它不可能,因为实际名称有点不同,例如:比利时,布鲁塞尔=“BXBRUSSL.txt” – copied