如果列表中尚未包含包含完全相同字符序列的条目,我只想将字符串添加到列表中。
这不起作用......“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手动完成每个条目?或者有更好的方式吗?
答案 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);
}