2013-06-18 2 views
0

У меня есть Iterable, и мне нужно проверить конкретную строку внутри итерабельного. Я пробовал iter.contains("my string"), но он не работает. Есть идеи?Я ищу метод, содержащий как метод для iterable

+3

Нам нужна дополнительная информация (так же как этот комментарий требует больше данных о том, какие данные нам нужны). – Pshemo

+1

Можете ли вы показать еще какой-нибудь код? Что именно означает 'iter'? –

+0

http://stackoverflow.com/questions/2925765/why-does-iterator-have-a-contains-method-but-iterable-does-not-in-scala-2-8 – lamilambkin

ответ

0

попробовать с

iter.toString().toLowerCase().equals("my string") 
+0

Это не вопрос, я думаю, он хочет сделать это, не итерируя через элементы ... Почему загадка, но там она , –

+0

Хорошо. Я думаю, проблема, как он пытался итерации элемент и сравнить с объектом 'iter' напрямую. – NFE

+0

@VTT так это было о «Итераторе», а не «Итерабельно»? –

3

Iterable - это интерфейс, он не содержит метод, подобный содержащему, поскольку он предполагает, что базовая структура данных может быть прочитана последовательно без повреждения.

Также не допускаются допущения, которые делает интерфейс Iterable.

3

Ваш единственный реальный вариант с голым Iterable состоит в том, чтобы сделать голый цикл for:

for (String string : iterable) { 
    if (string.equals(foo)) { 
    return true; 
    } 
} 
return false; 

... или вы могли бы назвать другой метод, который делает практически то же самое, например. Guava's Iterables.contains(Iterable, Object).

2

Интерфейс Iterable возвращает только Итератор. Поэтому невозможно напрямую получить, если определенное значение внутри. Вместо этого вам нужно выполнять итерацию с использованием каждой структуры, например.

boolean found = false; 
for (String s: iter) { 
    if (s.equals("my string")) { 
     found = true; 
     break; 
    } 
} 

В зависимости от размера это может быть не очень эффективным. Но если это ваш единственный выбор ... он будет работать как минимум.

+2

Несколько ошибок там, Björn, таких как 'string' вместо' String' и используя '==' вместо 'equals()' на 'String'. –

+0

@owlstead: Вы правы. Спасибо за комментарий! Я исправил ошибки. –

Смежные вопросы