Как я могу проверить, существует ли элемент в наборе предметов? - PullRequest
31 голосов
/ 14 января 2011

В выражении if в Java, как я могу проверить, существует ли объект в наборе элементов. Например. В этом сценарии мне нужно подтвердить, что фрукт будет яблоком, апельсином или бананом.

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

Это очень тривиальная вещь, но я не мог придумать краткий и лаконичный способ сделать это.

Ответы [ 4 ]

43 голосов
/ 14 января 2011
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*/));
8 голосов
/ 14 января 2011

для полноты, используя google-collection / 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 голосов
/ 14 января 2011

Is 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 что-то будет :)

1 голос
/ 14 января 2011

Если у вас есть Set, List, Map фруктов, которые имеют одного и того же родителя: Collection, вы можете попробовать этот пример.

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

(Для Java 8/9/10 способы создания литерала Set см. этот SO-ответ .)

Будьте осторожны с чувствительностью к регистру (оранжевый! = Оранжевый).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...