在Java中的if
聲明中,我如何檢查一組項目中是否存在對象。例如。 在這種情況下,我需要驗證水果將是一個蘋果,橙子或香蕉。如何檢查一組項目中是否存在元素?
if (fruitname in ["APPLE", "ORANGES", "GRAPES"]) {
//Do something
}
這是一件很平凡的事情,但我找不出一個簡短而簡明的方法來實現這一點。
在Java中的if
聲明中,我如何檢查一組項目中是否存在對象。例如。 在這種情況下,我需要驗證水果將是一個蘋果,橙子或香蕉。如何檢查一組項目中是否存在元素?
if (fruitname in ["APPLE", "ORANGES", "GRAPES"]) {
//Do something
}
這是一件很平凡的事情,但我找不出一個簡短而簡明的方法來實現這一點。
static final List<String> fruit = Arrays.asList("APPLE", "ORANGES", "GRAPES");
if (fruit.contains(fruitname))
如果您的清單要大得多,一套更有效。
static final Set<String> fruit = new HashSet<String>(
Arrays.asList("APPLE", "ORANGES", "GRAPES", /*many more*/));
是Arrays.binarySearch你在找什麼?
String [] fruits = new String[]{"APPLE", "ORANGES", "GRAPES"};
Arrays.sort(fruits); // binarySearch requires that the array is sorted
if (Arrays.binarySearch(fruits), fruitname) >= 0) {
// found!
}
當然可信Apache Commons ArrayUtils:
if (ArrayUtils.contains(new String[]{"APPLE", "ORANGES", "GRAPES"}, fruitname){
// found
}
我知道會有東西在Apache的百科全書:)
使用谷歌的集合的完整性/番石榴:
import com.google.common.collect.Sets;
static final Set<String> fruit = Sets.newHashSet("APPLE", "ORANGES", "GRAPES");
if (fruit.contains(fruitname))
或使用飛機舊的jdk類:
static final Set<String> fruit = new HashSet<String>(Arrays.asList("APPLE", "ORANGES", "GRAPES"));
如果您的Set,List,Map中的水果都具有相同的父級:Collection,那麼可以試試這個例子。
String fruitName = "Orange";
Collection<String> fruits = ... // set of fruits
if (fruits.contains(fruitName)) {
...
}
但你一定要在區分大小寫的關注(橙色!=橙色)
還不如讓它`Set`。似乎更合適。 – wds 2011-01-14 08:53:33
@wds實際上並沒有Arrays.asSet方法,如果這是該集合的唯一用途,額外的轉換(到Set)步驟似乎不值得付出努力。 – extraneon 2011-01-14 10:02:52