Как проверить, не содержит ли элемент в ArrayList <String>определенное слово? - PullRequest
0 голосов
/ 01 июля 2018

Я хочу использовать цикл for следующим образом:

`button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    Object.setList();

for(int i = 0; i < Object.getList.size(); i++)
    if(!Object.getList.get(i).trim().toLowerCase().contains("hello")) {
        Toast.makeText(getContext(), "List does not contain "Hello", Toast.LENGTH_LONG).show;
    }
}`

Это моя модель:

public class Object {
    private ArrayList<String> mArrayList;

    public void setList() {
        mArrayList = new Arraylist<>();
        mArrayList.add("Random Message");
        mArrayList.add("ZZZZ")
    }

    public ArrayList<String> getList() {
        return mArrayList;
    }
}

Я все еще получаю сообщение Toast, но оно прекрасно работает, когда я использую:

if(!Object.getList().toString.trim().toLowerCase().contains("hello"))

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Если вы хотите сделать это одной строкой, сделайте это так:

if(object.getList().stream().noneMatch(it -> "hello".equalsIgnoreCase(it))){
  // ...
}

Это будет работать, если вы используете Java 8.

0 голосов
/ 01 июля 2018

Если ваша цель - проверить, нет ли в каждой строке списка «hello» и показывать тост каждый раз, тогда вы можете сделать это:

Object.getList().forEach(el -> {
if(!el.toLowerCase().contains("hello")){
  // show toast
}
})

Если ваша цель - проверить, нет ли в каждой строке списка «hello», и показать тост только один раз:

if(Object.getList().stream().noneMatch(el -> !el.toLowerCase().contains("hello"))){
// toast
}

Если вы хотите просто проверить, есть ли какое-либо укус, которое соответствует какому-либо элементу списка, тогда сделайте то, что @SatyendraKumar предложило.

0 голосов
/ 01 июля 2018

Я не совсем уверен, как выглядит это выражение:

Object.getList().toString.trim().toLowerCase().contains("hello")

работает. Рассмотрим два смежных элемента: «он» и «лло». Даже в этом случае ваше решение будет утверждать, что строка "hello" существует в ArrayList. Так как в ArrayList есть хэширование, единственное решение - через грубую силу (дает производительность O(n)). Вот решение:

for(String element: list) {
   if (str.equalsIgnoreCase(element)) {
       // Found
   }
}
...