日期:2014-05-20  浏览次数:20759 次

ArrayList根据索引怎么移除对象?
如下代码:
  String qq="123456";
List<Friend> friends=server.getFriend();
for(int i=0;i<friends.size();i++){
if(!friends.get(i).getQq().equals(qq)){
friends.remove(i);
}
}
  有何错?

------解决方案--------------------
移除本身没错,但这样会导致 friends.size() 动态减小。

那么你的循环 for(int i=0;i<friends.size();i++){ 就不准确了,容易造成错漏。

这种情况下,建议换成用迭代器,会更合适些:
for (Iterator<Friend> iterator = friends.iterator(); iterator.hasNext()) {
Friend entry = (Friend) iterator.next();
if(!entry.getQq().equals(qq)){
iterator.remove();
}
}

直接打上来的代码,可能有小错误,你测试下吧。