检查字符串上的列表是否包含来自另一个列表的字符串

时间:2014-05-26 13:20:04

标签: java

我有两个字符串列表,' a'和' b'。现在我需要检查' b'中是否有任何字符串。包含或等于' a'。

中的任何字符串

这是我尝试过的

for (String string : a) {
    if (!contains(string)) {
        // add 'string' to another list. 
    }
}

private boolean contains(String a) {
    for (String string : b) {
        if (b.contains(a)) {
            return false;
        }
    }

    return true;
}

但是,这似乎不起作用。请记住,我还是比较新的Java,所以还有很多我还不了解的东西。

编辑:我故意返回false,我只是更改了变量以使其更容易理解。

3 个答案:

答案 0 :(得分:1)

for(String s : a) 
  for(String ss : b) 
     if(s.contains(ss)) return true;
return false;

它应该有用。

答案 1 :(得分:0)

试试这个

!Collections.disjoint(list1,list2);

List.retainAll

答案 2 :(得分:0)

尝试使用此方法contains(),传递String a时检查传递Collcetion b。如果b包含字符串a,那么请返回true其他false

private static boolean contains(String a, List<String> b) {
  for (String string : b) {
    if (string.equals(a)) {
      return true;
    }
   }
  return false;
}

示例:

List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
a.add("3");

List<String> b = new ArrayList<String>();
b.add("1");
b.add("2");
b.add("4");

for (String string : a) {
  if (!contains(string, b)) {
    System.out.println("String " + string + " is not present in collection b");
  }
}

SYSOUT:

String 3 is not present in collection b