我的朋友,从您的示例来看,您似乎正在尝试查看是否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);
}