繁体   English   中英

什么是交换两个字符串(字母数字部件号)的更有效方式

[英]What is a more efficient way interchange two strings (alphanumberic part numbers)

我是Android开发和Java的新手。 我为自己制作了一个android应用,因为给他们带来了不便,他们将新零件号与旧零件号互换了。

长话短说,我计算机中的零件号已更新,但它们不会更改任何旧零件号上的标签,直到供应持续(很长时间)。 零件编号为“无逻辑顺序”,并且为字母数字。 所以它们必须是字符串(我想?-我来自C ++背景)。 每当我们有互换订单时,我们就会得到一包10页的零件号,以便进行搜索。

因此,我制作了一个应用程序,可以将计算机上的数字与标签上的数字互换。 但这是if / else循环的庞大清单。 例如:

else if(str.equals("EUR31"))    {  return "D102 B"; }
    else if(str.equals("EUR228"))   {  return "D222 B"; }
    else if(str.equals("EUR1072"))  {  return "D311 B"; }
    else if(str.equals("ACT482")) {  return "D646 B"; }
    else if(str.equals("ACT325")) {  return "D649 B"; }
    else if(str.equals("EUR394")) {  return "D712 B"; }
    else if(str.equals("ACT526")) {  return "D723 B"; }
    else if(str.equals("EUR391")) {  return "D729 B"; }

问题:是否有一种方法可以优化它,使其不是300行的if / else语句? 我查看了哈希表等,但是如果可能,我不确定如何正确实现它。 这仅是为我自己,它可以快速运行并且在我的手机上没有任何错误,只是在寻求改进。

为了将这种逻辑解决到编程中,HshTable是最好的方法,因为它赋予O(1)搜索时间复杂性。 要使用哈希表实现您的问题,它将类似于:创建一个Map,如下所示:

Map<String,String> strMap = new Map<String,String>();
// now put your strings into strMap like
map.put("your_key", "yourValue");
to retrieve the value corresponding to Key it will be like:
if(strMap.containsKey(str)){// your str
return strMap.get(str);
}

根据需要修改它,例如in循环和全部;

示例:根据您的问题,是否将所有字符串一一放置在地图中,例如:

 strMap.put("EUR31","D102 B");
strMap.put("EUR228", "D222 B");
strMap.put("EUR1072","D311 B");
..........
..........

当您从地图检索数据时,您可以执行以下操作:

String str = "EUR31";
if(strMap.containsKey(str)){
return strMap.get(str);
}

您可以使用2 ArrayList并按索引检查

ArrayList<String> firstList = new ArrayList<String>() {
            {
                add("EUR31");
                add("EUR228");
                add("EUR1072");
                add("ACT482");
            }
        };
ArrayList<String> secondList = new ArrayList<String>() {
            {
                add("D102 B");
                add("D222 B");
                add("D311 B");
                add("D646 B");
            }
};

String getResult(String firstWord) {
     for (int i = 0; i < firstList.size(); i++) {
          if (firstList.get(i).equals(firstWord)) {
              return secondList.get(i);
          }
     }
     return "";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM