java的List集合迭代器

list.add((byte)56);list.add((short)5656);list.add(565656);list.add(56565656L);Iterato... list.add((byte)56);
list.add((short)5656);
list.add(565656);
list.add(56565656L);

Iterator it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
if(obj instanceof Integer){
it.remove();
}
System.out.println(obj);
}

为什么在迭代时候删除了 显示还没有删除掉?
int类型的数据应该删掉的才对?为什么没删掉?
展开
 我来答
鱼得水号
2014-10-09 · 聚爱水族生活馆,让你的生活如鱼得水
鱼得水号
采纳数:585 获赞数:3014

向TA提问 私信TA
展开全部

是删除了的,亲。是你弄错 了,你对比一下我给你写的代码,你就知道你的问题出在哪了,我只加了一句话。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArrayListTest
{
 public static void main(String[] args)
 {
  List<Object> list = new ArrayList<Object>();
  list.add((byte) 56);
  list.add((short) 5656);
  list.add(565656);
  list.add(56565656L);
  Iterator it = list.iterator();
  while (it.hasNext())
  {
   Object obj = it.next();
   if (obj instanceof Integer)
   {
    it.remove();
    //删除成功以后就不应该再输出这个删除的值,明白吗? 
    continue;
   }
   System.out.println(obj);
  }
 }
}

 有什么问题你都可以追问我,没问题,望采纳,谢谢

追问
为什么remove完了之后 在打印obj还有呢 不是删了吗?
追答
你删除的是list里面的,在删除之前,你已经把要删除的对象取出来放到一个Object里面去了(我贴出来代码的16行),然而你打印的是Object这个对象,而不是list里面的,明白了吗?

望采纳,谢谢!
百度网友acfb1c5
2014-10-09 · TA获得超过657个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:274万
展开全部

是删掉了的!

下面你糊涂了

Object obj = it.next(); //上面你迭代出一个对象了,然后用obj这个变量引用这个迭代出的 //对象	 
 if(obj instanceof ){  
it.remove(); //这里是obj引用的对象是 Integer类型实例的话,在数组中删掉,确实删掉了     
 }  
 System.out.println(obj); 
//你这里是把这个obj引用的对象打印出来了,
 // List里面确实删除了没引用了,   
// 但第一行的Object obj依然引用了这个对象,所以还会打印出来
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式