【发布时间】:2016-12-28 10:42:45
【问题描述】:
我目前正在尝试创建一个方法来确定 ArrayList(a2) 是否包含 ArrayList(a1),因为这两个列表都包含重复值(containsAll 不能像 ArrayList 包含重复值一样工作,那么它无论值的数量如何,都会返回true)
这就是我所拥有的:(我相信它会起作用,但是我不能在 for 循环中使用 .remove)
public boolean isSubset(ArrayList<Integer> a1, ArrayList<Integer> a2) {
Integer a1Size= a1.size();
for (Integer integer2:a2){
for (Integer integer1: a1){
if (integer1==integer2){
a1.remove(integer1);
a2.remove(integer2);
if (a1Size==0){
return true;
}
}
}
}
return false;
}
感谢您的帮助。
【问题讨论】:
-
两个列表中项目的顺序重要吗?
-
a1Size的值仅被计算一次(在循环之前),因此基于其值的逻辑没有意义 -
要从 arrayList 中删除使用迭代器
-
为什么不直接使用
removeAll? -
对我来说听起来像是设置交叉点