ArrayList根据索引怎么移除对象?

txb5814163 2012-07-22 07:15:31
如下代码:
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);
}
}
有何错?
...全文
467 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
默默的伟哥 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

Java code

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);
}
}



对于List建议不要使用这种方法去遍历,效率……
[/Quote]

有区别吗?还是要调用其remove方法。。
gehencai 2012-07-23
  • 打赏
  • 举报
回复
删除完了break一下就好了!
sdyngg_00 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

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

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

这种情况下,建议换成用迭代器,会更合适些:
for (Iterator<Friend> iterator = friends.iterator(); iterator.hasNext()) {
……
[/Quote]

支持一楼的方法,迭代器是个不错的选择。
limin_ding 2012-07-23
  • 打赏
  • 举报
回复
 
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);
}
}


对于List建议不要使用这种方法去遍历,效率比较低,建议使用Iterator
五哥 2012-07-22
  • 打赏
  • 举报
回复
String qq="123456";
List<Friend> friends=server.getFriend();
if( friends != null){
for(int i=friends.size()-1;i>= 0; i--){
if(!friends.get(i).getQq().equals(qq)){
friends.remove(i);
}
}
}
brightyq 2012-07-22
  • 打赏
  • 举报
回复
非要用索引这种也可以,只是remove掉一个以后,索引的位置要保持不变,因为原本的下一个元素变成了索引现在的位置。
即在friends.remove(i);后面加一句: i--;
MiceRice 2012-07-22
  • 打赏
  • 举报
回复
移除本身没错,但这样会导致 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();
}
}

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

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧