我在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");
}
答案 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
为此,您需要遍历列表并检查条目是否包含所需的子字符串。
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"));