繁体   English   中英

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

[英]How can I check if an element exists in a Set of items?

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

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

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

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*/));

为了完整性使用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"));

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

如果您有所有具有相同父级的水果的SetListMapCollection ,您可以尝试此示例。

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

(对于Java 8/9/10创建文字Set方法,请参阅此SO答案 。)

区分大小写(橙色!=橙色)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM