在Java的if
语句中,如何检查对象是否存在于一组项目中。例如。
在这种情况下,我需要验证水果是苹果,橙子还是香蕉。
if (fruitname in ["APPLE", "ORANGES", "GRAPES"]) {
//Do something
}
这是一个非常微不足道的事情,但我无法找到一个简短而简洁的方法来实现这一目标。
答案 0 :(得分:40)
static final List<String> fruits = Arrays.asList("APPLE", "ORANGES", "GRAPES");
if (fruits.contains(fruitname))
如果你的名单要大得多,那么一套就会更有效率。
static final Set<String> fruits = new HashSet<String>(
Arrays.asList("APPLE", "ORANGES", "GRAPES", /*many more*/));
答案 1 :(得分:8)
使用google-collections / guava完整性:
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"));
答案 2 :(得分:2)
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 Commons会有一些东西:)
答案 3 :(得分:1)
如果您有Set
,List
,Map
个水果,这些水果都有相同的父级:Collection
,您可以尝试此示例。
String fruitName = "Orange";
Collection<String> fruits = ... // set of fruits
if (fruits.contains(fruitName)) {
...
}
(对于Java 8/9/10创建文字Set
的方法,请参阅this SO answer。)
小心区分大小写(橙色!=橙色)。