1
String isoArray[] = {"020","784","004","028"};

if(!("020".equals(element[2]) || "784".equals(element[2]) || "004".equals(element[2]) || "028".equals(element[2]))){
            country a = new country(element[4], element[5], element[7]);
            countries.add(a);
}

有没有更简单的方法来比较这些字符串而不使用循环?

4

5 回答 5

12

试试下面的代码。

if (Arrays.asList(isoArray).contains("YOUR_STRING"))
于 2013-02-08T03:39:04.057 回答
0

如果您使用的是 Java 7,那么您也可以在 String 常量上使用 switch-case。

于 2013-02-08T03:39:18.917 回答
0

在不了解问题的背景的情况下,很难给出答案。

比较/搜索/组织数组最流行的方法(也是广泛教授的方法)是循环。一种这样的解决方案是冒泡排序算法类型循环。

for(int x = 0; x < array1.size(); x++){
   for(int y = 0; y < array2.size(); y++){
       if(array1[x].compare(array2[y]==0)
           Then they are equal 
       else
           They are not equal
    }
}

这是迄今为止对多个数组进行简单操作的最快方法

于 2013-02-08T03:40:45.553 回答
0

看起来您要使用的类型是 Set

Set<String> mySet = new HashSet<String>();
mySet.add("020");
mySet.add("784");
mySet.add("004");
mySet.add("028");

if(!mySet.contains(element[2])){
    country a = new country(element[4], element[5], element[7]);
    countries.add(a);
}
  • HashSet将使用散列来查找值。
  • TreeSet将进行二叉树搜索。
于 2013-02-08T04:14:13.523 回答
0

我的朋友,从您的示例来看,您似乎正在尝试查看是否element[2]包含在值数组中。正如@Real 所说,您可以将数组转换为列表,以便您可以使用列表的contains谓词。你猜怎么着?contains谓词只是一个循环。

我鄙视像这样包含无偿多次转换的代码。它会产生垃圾。这是今天运行良好的代码,因为您的数据规模很大N,并且五年后当您的公司上市并且数据现在规模很大时就会消失100000 * N。不要和它一起死。

所以选择是显而易见的。您可以使用ArrayList一次转换来从一开始就保存您的数组:

ArrayList<String> isoArray = Arrays.asList(new String [] {"020", "784", "004", "028"});

...

    if (!isoArray.contains(element[2])) {
        country a = new country(element[4], element[5], element[7]);
        countries.add(a);
    }

或者您可以实现自己的 contains 方法,该方法适用于裸数组:

static public boolean contains(Object [] a, Object item) {
    for (Object aItem : a) if (item.equals(aItem)) return true;
    return false;
}

您需要将这样的实用程序函数合并到一个名为 (tada!) 的类(主要是静态函数)Utility中。顺便说一句,这就是为什么上帝给了我们循环和函数。现在,

String isoArray[] = {"020", "784", "004", "028"};

...

    if (!contains(isoArray, element[2])) {
        country a = new country(element[4], element[5], element[7]);
        countries.add(a);
    }

世界上一切都好……

如果您可以按排序顺序排列值表,还有另一种方法:使用Arrays二进制搜索例程。

String isoArray[] = {"004", "020", "028", "784"};

...

    if (Arrays.binarySearch(isoArray, element[2]) >= 0) {
        country a = new country(element[4], element[5], element[7]);
        countries.add(a);
    }
于 2013-02-08T04:16:09.707 回答