我期望1 c 3 o
获得结果。但只得到1 c 3 o 5 c
。
代码有什么问题?
ArrayList<String> A_array= new ArrayList<>();
A_array.add(0,"c"); B_array.add(0,1);
A_array.add(1,"c"); B_array.add(1,2);
A_array.add(2,"o"); B_array.add(2,3);
A_array.add(3,"c"); B_array.add(3,4);
A_array.add(4,"c"); B_array.add(4,5);
A_array.add(5,"c"); B_array.add(5,6);
for(int i=0;i<B_array.size()-1;i++)
{
for(int j=i+1;j<B_array.size();j++)
{
if(A_array.get(i)==A_array.get(j))
{
B_array.remove(j);A_array.remove(j);
}
}
}
for(int i=0;i<B_array.size();i++)
{
System.out.println(B_array.get(i)+" "+A_array.get(i));
}
答案 0 :(得分:1)
因为你正在修改数组并删除元素,所以你应该更新索引,这里我建议使用迭代器,然后使用iterator.remove
。
for (Iterator<String> iterator = B_array.iterator(); iterator.hasNext();) {
String value = iterator.next();
if(equals) {
iterator.remove();
}
}
答案 1 :(得分:1)
要安全删除Iterable
中的对象,例如List
,请使用Iterator:
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
String s = iterator.next();
if(some comdition on s) {
iterator.remove();
}
}