Java中的ArrayList - 部分检查元素

时间:2015-07-07 07:02:54

标签: java android arraylist

我在Java中有一个关于ArrayList的简单问题。

我有一个简单的ArrayList。现在我想查看ArrayList是否包含某个字符串。我知道contains()检查整个对象,但我想检查对象的一部分是否有我正在寻找的字符串。

那么实现这一目标的最佳方法是什么?我的示例在此处显示False,我希望它说True。 怎么样?

ArrayList<String> test_al = new ArrayList();
test_al.add("hello world");

if(test_al.contains("hello")){
    Log.v(LOG_TAG,"True");
}
else{
    Log.v(LOG_TAG,"False");
}

4 个答案:

答案 0 :(得分:5)

在这种情况下,您必须遍历列表。最好创建一个单独的方法:

static boolean hasSubstring(Collection<String> c, String substring) {
    for(String s : c) {
        if(s.contains(substring))
            return true;
    }
    return false;
}

用法:

    ArrayList<String> test_al = new ArrayList();
    test_al.add("hello world");

    if(hasSubstring(test_al, "hello")){
        Log.v(LOG_TAG,"True");
    }
    else{
        Log.v(LOG_TAG,"False");
    }

答案 1 :(得分:2)

list.contains()检查列表条目中的整个匹配。

您要做的是检查Strings

列表中是否存在subString

为此,您需要遍历列表并检查条目是否包含所需的子字符串。

public boolean contains(List<String> list, String key){
for(int i = 0; i < list.size(); i++){
  if(list.get(i).contains(key))
     return true;
   }
return false;
}

答案 2 :(得分:1)

您可以通过数组中的元素进行简单的迭代,例如:

ArrayList<String> test_al = new ArrayList();
boolean contains = false;
for(String el : test_al){
    // if you find an element that has the "hello" in it, stop the loop
    if(el.indexOf("hello") > -1){
        contains = true;
        break;
    }
}

希望这有助于你:)

答案 3 :(得分:0)

在Java 8 SDK中,新的Stream API有一种针对这种情况的方法:

test_al.stream().anyMatch(i->i.contains("hello"));