Ответ 1
Используйте Arrays.asList
:
if( Arrays.asList("a","b","c").contains("a") )
Я работал и работал с Java/Python. Теперь в этой ситуации я хочу проверить, находится ли элемент в списке и что делать...
Python говорит:
if "a" in ["a", "b", "c"]:
print "It there!"
Предоставляет ли java какой-либо один вкладыш для этого, а не создает ArrayList/Set или подобную структуру данных в шагах и добавляет к нему элементы?
Спасибо
Используйте Arrays.asList
:
if( Arrays.asList("a","b","c").contains("a") )
В интерфейсе 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)).
В JDK7:
if ({"a", "b", "c"}.contains("a")) {
Предполагая, что проект литералов коллекций монет проекта проходит.
Изменить: это не так.
Вы можете попробовать использовать строки с разделителем, который не отображается ни в одном элементе.
if ("|a|b|c|".contains("|a|"))
Вы можете использовать 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() кажется более чистым.
Если он действительно хочет один лайнер без каких-либо коллекций, хорошо, он может иметь один:
for(String s:new String[]{"a", "b", "c")) if (s.equals("a")) System.out.println("It there");
* улыбка *
(Разве это не уродливо? Пожалуйста, не используйте его в реальном коде)
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;
}