ArrayList集合中怎么根据一个索引移除一个对象

来源:互联网 发布:伺服电机选型计算软件 编辑:程序博客网 时间:2024/04/29 17:38

如下代码:

String name=”xxx”;

ArrayList<User> users=new ArrayList<User>();

for(int i=0;i<users.size();i++){

if(!users.get(i).getName().equals(name)){

users.remove(i);

}

}

为什么使用以上的方法的时候不能完全移除?

其实方法本身没错,但这样会导致 users.size()动态减小。循环

for(int i=0;i<friends.size();i++){

....

}

就不准确了,容易造成错漏,这种情况下建议换成用迭代器,会更合适些:

for(Iterator<User>iterator= users.iterator();iterator.hasNext();) {

User entry = (User) iterator.next();

if(!entry.getName().equals(name)){

iterator.remove();

}

}

要用索引也可以移除,只是remove掉一个以后,索引的位置要保持不变,因为原本的下一个元素变成了索引现在的位置。
即在users.remove(i);后面加一句:i--;即可。