2016-02-20 3 views
-1

у меня есть:Как сравнить список строк до нескольких строк

String[] Value={"Available to trade at 12 30","I love sherlock"} 

и я хочу, чтобы проверить, если шерлок присутствует в списке без использования for each цикла.

+0

У вас есть * массив *. Итерация через контейнер и использование 'contains()' – TheLostMind

+0

«sherlock» в массиве отсутствует. Он присутствует * в пределах элемента * массива ... –

+0

Как по комментарию @ cricket_007 вы хотите найти строку в массиве или массиве элемента? – soorapadman

ответ

0

Вы можете сделать что-то вроде этого

Arrays.asList (Value) .Contains ("строка для поиска");

Лучше вариант, чтобы преобразовать массив в список, так что несколько функций могут быть использованы

+1

Это не дает решения о том, как получить «sherlock», хотя –

+0

Оформить заказ http://ideone.com/oeZb7a –

+0

Просьба указать код в своем ответе, а не как ссылку –

0

Проблема неотъемлемо требует перебора всех элементов в массиве, по существу, выполняя для каждого. Однако вы можете выбрать, хотите ли вы хорошую производительность памяти или хорошее время выполнения для поиска.

Если вы хотите, чтобы хорошая производительность памяти оставила его как есть и перебирать список каждый раз, когда вы выполняете чек. Для хорошего времени выполнения вы должны создать хешсет и заполнить его каждой подстрокой, присутствующей в списке. Это требует много времени и памяти, но после того, как вы создали свой набор, вы можете сохранить его и повторно использовать, чтобы каждая проверка времени выполнения выполняла только время входа в систему.

0

Вы можете преобразовать массив в одну строку, а затем использовать метод String .contains.

String entireArray = Arrays.toString(Value); 
boolean sherlockPresent = entireArray.contains("sherlock"); 
1

Java потоки удобны для этого

String[] value = {"Available to trade at 12 30", "I love sherlock"}; 
Stream.of(value).anyMatch(s -> s.contains("sherlock")); 

Если вы хотите, чтобы получить строку, которая имеет Шерлока:

String[] value = {"Available to trade at 12 30", "I love sherlock"}; 
Stream.of(value).filter(s -> s.contains("sherlock")).findFirst().get(); 

Или использовать findAny(), если вы не заботитесь о заказе. Оба findAny и findFirst возвращают Необязательный, который будет пуст, если совпадений нет, а .get() будет бросать.