例如,如果ArrayList
带有set1 = {"a", "a", "b", "a", "b", "c", "d", "e"}
,ArrayList
带有set2 = {"a", "b"}
。请删除a
和b
set1
的出现次数有{"c", "d", "e"}
例如,如果ArrayList与set1 = {“a”,“a”,“b”,“a”,“b”,“c”,“d”,“e”} ArrayList with set2 = {“a”,“b”}
then remove occurence of a and b set1 will have {"c", "d", "e"}
我试过了:
public class test {
public static void main(String[] args){
ArrayList<String> contents = new ArrayList<String>();
contents.add("a");
contents.add("a");
contents.add("b");
contents.add("b");
contents.add("c");
contents.add("d");
contents.add("e");
ArrayList<String> delete = new ArrayList<String>();
delete.add("a");
delete.add("b");
for(String str: contents)
System.out.println(str);
System.out.println();
contains(contents, delete);
System.out.println();
for(String st: contents)
System.out.println(st);
}
public static void contains(ArrayList<String> set1, ArrayList<String> set2 ) {
int count = 0;
OUTER:
for (int i = 0; i < set1.size() - set2.size(); i++) {
for (int j = 0; j < set2.size(); j++) {
if (!set1.get(i + j).equals(set2.get(j)))
continue OUTER;
else{
set1.remove(set1.get(i+j));
}
}
count++;
}
System.out.println(count);
}
当前输出:a b C d Ë 我仍然得到一个b c d e但我应该只得到c d e因为a,b出现两次它应该删除两次出现。
答案 0 :(得分:0)
这是我的建议。
您展示了两个ArrayList
。
看看List,有一个方便的选项List.removeAll()。尝试使用它。
来自Java
doc,removeAll()
从此列表中删除其中包含的所有元素 指定集合(可选操作)。
编辑:
由于您提供了 工作 。你可以尝试如下。
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list1.add("a");
list1.add("a");
list1.add("b");
list1.add("a");
list1.add("b");
list1.add("c");
list1.add("d");
list1.add("e");
list2.add("a");
list2.add("b");
list1.removeAll(list2);
System.out.println(list1);
Out put:
[c, d, e]