我的朋友,從你的例子中看起來好像你正在試圖看看element[2]
是否包含在一個值數組中。正如@Real所說,您可以將數組轉換爲列表,以便您可以使用列表的謂詞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);
}
或者您也可以實現自己的包含裸陣列的工作方法:
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);
}
循環出了什麼問題。理解你的理由可能有助於解答。 – MadcoreTom
if語句中的嚴重比較被認爲是一種不好的做法。這是如此醜陋,容易出錯,難以閱讀。你總是有更好的方法來實現相同的目標。 – Drogba