我想使用这样的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"))
答案 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提出的建议。