Java контейнер. Содержит вопрос - PullRequest
1 голос
/ 22 июля 2010

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


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

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

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

Ответы [ 4 ]

3 голосов
/ 22 июля 2010

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

1 голос
/ 22 июля 2010
class ContainsTest {
    public static void main(String[] args) {
        String[] i = {"One", "Two", "Three"};
        System.out.println(java.util.Arrays.asList(i).contains("One"));
    }  
}

OUTPUT

 ----jGRASP exec: java ContainsTest

true

 ----jGRASP: operation complete.

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

1 голос
/ 22 июля 2010

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

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

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

0 голосов
/ 22 июля 2010

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

...