2010-07-22 3 views
1

Есть ли простой способ проверить контейнер, если он содержит значение, а не объект? Это код, который я хотел бы работать:Java container .contains question

 

String[] i = {"One", "Two", "Three"}; 

if (Arrays.asList(i).contains("One")){ 
return true; 
} 
 

Есть ли способ сделать это, или мне придется перебрать массив сам?

+0

Я скопировал его дословно, и это сработало. – corsiKa

ответ

3

Это должно работать нормально. Строка - это объект, поэтому вы можете использовать перегрузку contains(Object) (которая основана на equals).

+0

Я предполагаю, что имеет смысл, что 'contains()' использует '.equals' вместо' == '. Думаю, я просто подумал об этом. – Falmarri

1

Вы пробовали этот код? Он должен работать.

Коллекция Java использует equals для определения contains равенства. Таким образом, если метод equals на объекте проверяет равенство значения (а не ссылки), то то, что вы хотите, будет работать.

Строки проверяют, совпадают ли их значения.

0

Чтобы повторить все остальные, строка - это объект, поэтому это будет работать нормально. Метод contains() использует Object.equals(), чтобы определить, существует ли данный объект в списке.

1
class ContainsTest { 
    public static void main(String[] args) { 
     String[] i = {"One", "Two", "Three"}; 
     System.out.println(java.util.Arrays.asList(i).contains("One")); 
    } 
} 

ВЫВОД

----jGRASP exec: java ContainsTest 

true 

----jGRASP: operation complete. 

Я бы сказал, что это работает.