Подтвердить что ты не робот

Один лайнер, чтобы проверить, находится ли элемент в списке

Я работал и работал с Java/Python. Теперь в этой ситуации я хочу проверить, находится ли элемент в списке и что делать...

Python говорит:

if "a" in ["a", "b", "c"]:
    print "It there!"

Предоставляет ли java какой-либо один вкладыш для этого, а не создает ArrayList/Set или подобную структуру данных в шагах и добавляет к нему элементы?

Спасибо

4b9b3361

Ответ 1

Используйте Arrays.asList:

if( Arrays.asList("a","b","c").contains("a") )

Ответ 2

В интерфейсе List имеется логический метод (Object obj).

Вы должны быть в состоянии сказать:

if (list.contains("a")) {
    System.out.println("It there");
}

В соответствии с javadoc:

boolean contains(Object o)

Returns true if this list contains the specified element. 
More formally, returns true if and only if this list contains at 
least one element e such that (o==null ? e==null : o.equals(e)).

Ответ 3

В JDK7:

if ({"a", "b", "c"}.contains("a")) {

Предполагая, что проект литералов коллекций монет проекта проходит.

Изменить: это не так.

Ответ 4

Вы можете попробовать использовать строки с разделителем, который не отображается ни в одном элементе.

if ("|a|b|c|".contains("|a|"))

Ответ 5

Вы можете использовать java.util.Arrays.binarySearch, чтобы найти элемент в массиве или проверить его существование:

import java.util.Arrays;
...

char[] array = new char[] {'a', 'x', 'm'};
Arrays.sort(array); 
if (Arrays.binarySearch(array, 'm') >= 0) {
    System.out.println("Yes, m is there");
}

Помните, что для правильной работы binarySearch массив нужно сортировать. Следовательно, вызов в Arrays.sort() в примере. Если ваши данные уже отсортированы, вам не нужно это делать. Таким образом, это не строго однострочный, если вам нужно сначала отсортировать свой массив. К сожалению, Arrays.sort() не возвращает ссылку на массив, поэтому невозможно комбинировать sort и binarySearch (т.е. Arrays.binarySearch(Arrayys.sort(myArray), ключ)) не работает).

Если вы можете позволить себе дополнительное выделение, использование Arrays.asList() кажется более чистым.

Ответ 6

Если он действительно хочет один лайнер без каких-либо коллекций, хорошо, он может иметь один:

for(String s:new String[]{"a", "b", "c")) if (s.equals("a")) System.out.println("It there");

* улыбка *

(Разве это не уродливо? Пожалуйста, не используйте его в реальном коде)

Ответ 7

 public class Itemfound{ 
        public static void main(String args[]){

                if( Arrays.asList("a","b","c").contains("a"){
                      System.out.println("It is here");
         }
    }

}

Это то, что вы ищете. Метод contains() просто проверяет индекс элемента в списке. Если индекс больше '0', то элемент присутствует в списке.

public boolean contains(Object o) {
return indexOf(o) >= 0;
}