如何检查ArrayList <string>中的项是否不包含某个单词?

时间:2018-07-01 10:27:45

标签: java string for-loop if-statement arraylist

我想使用这样的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 :(得分:1)

我不太确定这个表达方式:

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

有效。考虑两个相邻的元素:“ he”和“ llo”。即使在这种情况下,您的解决方案也会指出ArrayList中存在字符串“ hello”。由于ArrayList中存在ho散列,因此唯一的解决方案是通过蛮力(赋予O(n)的性能)。解决方法如下:

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

答案 1 :(得分:0)

如果要一行执行,请按以下步骤操作:

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

如果您使用的是Java 8,这将起作用。

答案 2 :(得分:0)

如果您的目的是检查列表中的每个字符串是否都没有“ 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提出的建议。