如何检查一组项目中是否存在元素?

在Java中的if语句中,如何检查对象是否存在于一组项中。 例如,在这种情况下,我需要validation水果将是苹果,橙子或香蕉。

 if (fruitname in ["APPLE", "ORANGES", "GRAPES"]) { //Do something } 

这是一个非常微不足道的事情,但我无法找到一个简短而简洁的方法来实现这一目标。

 static final List fruit = Arrays.asList("APPLE", "ORANGES", "GRAPES"); if (fruit.contains(fruitname)) 

如果您的列表更大,那么集合将更有效。

 static final Set fruit = new HashSet( Arrays.asList("APPLE", "ORANGES", "GRAPES", /*many more*/)); 

为了完整性使用google-collections / guava:

 import com.google.common.collect.Sets; static final Set fruit = Sets.newHashSet("APPLE", "ORANGES", "GRAPES"); if (fruit.contains(fruitname)) 

或使用飞机旧的jdk类:

 static final Set fruit = new HashSet(Arrays.asList("APPLE", "ORANGES", "GRAPES")); 

Arrays.binary搜索您要找的内容?

 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 Commons会有一些东西:)

如果您有所有具有相同父级的水果的集合,列表,地图:集合,您可以尝试此示例。

 String fruitName = "Orange"; Collection fruits = ... // set of fruits if (fruits.contains(fruitName)) { ... } 

但你必须注意区分大小写(橙色!=橙色)