检查列表条目是否包含单词序列java

时间:2014-07-25 17:50:56

标签: java string list

如果列表中尚未包含包含完全相同字符序列的条目,我只想将字符串添加到列表中。

这不起作用......“String”将被添加

list1.add("String");
list2.add("Hello I am String");

for (String str : list1) {
        if (!list2.contains(str))
            list2.add(str);
    }

即使list2的条目包含“String”,也会添加“String”一词。我怎么能告诉它不仅检查相同的字符序列?我是否必须使用forloops或RegEx手动完成每个条目?或者有更好的方式吗?

3 个答案:

答案 0 :(得分:1)

遍历循环中的两个列表:

outer: for (String str1 : list1) {
    for (String str2: list2) {
        if (str2.contains(str1)) {
            continue outer;
        }
    }

    list2.add(str);
}

这将检查子串的list2的每个元素。

答案 1 :(得分:0)

您需要使用String.contains而不是集合的包含(与整个String匹配)。 因此,您必须遍历列表中的所有字符串并在每个字符串上运行String.contains。

for (String str : list1) {
   boolean found = false;
   for (String str2 : list2) {
        if (str2.contains(str)) {
            found = true;
            break;
        }
   }
   if (!found) {
       list2.add(str);
   }
}

答案 2 :(得分:0)

你做错了..

list1.add("String");
list2.add("Hello I am String");

for (String str : list1) {
        if (!list2.contains(str)) 
       //The above line checks if list2 contains "String". It doesn't check if list2's Strings contain "String".
       // so, iterate over each value of list2 and check for string.contains(). 
            list2.add(str);
    }