A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 突然世界晴 中级黑马   /  2015-3-9 20:36  /  452 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ArrayList al=new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");

Iterator it=al.itrator();  //为什么这里是小写????????
while(int.hasNext())
{
     object obj=it.next();       //这是什么意思???????
     if(obj.equals("java02")) //obj.equals是调用自己的方法还是子类的????????
      it.remove();
     System.out.println(obj); //为什么移除后还会显示java02?????????
}
   System.out.println(al);   //而这里不显示java02?????????????


3 个回复

倒序浏览

  1. ArrayList al=new ArrayList();
  2. al.add("java01");
  3. al.add("java02");
  4. al.add("java03");

  5. Iterator it=al.itrator();  //为什么这里是小写????????[color=Red]这个地方是迭代器的运用,方便与下面的数据取出[/color]
  6. while(int.hasNext())
  7. {
  8.      object obj=it.next();       //这是什么意思???????[color=Red]这个地方是范型也是多态,因为object是所有类的基类[/color]
  9.      if(obj.equals("java02")) //obj.equals是调用自己的方法还是子类的????????[color=Red]这个地方是上面读取的返回值是String类型的所以这里的obj就是String类型在此调用equals方法进行比较String对象的值是否相等[/color]
  10.       it.remove(); [color=Red]remove方法有两个动作,第一是移除对应的值,第二就是返回移除的值[/color]
  11.      System.out.println(obj); //为什么移除后还会显示java02?????????
  12. }
  13.    System.out.println(al);   //而这里不显示java02?????????????[color=Red]上面的动作完成后,在此打印al集合就不会再有删除的元素了[/color]
复制代码
回复 使用道具 举报 1 0

谢谢!!,非常详细
回复 使用道具 举报
System.out.println(obj);//这个是因为集合里存的都是对象的引用,而不是对象实体,执行 it.remove()后只是将集合里面的引用移除,而此时obj仍然指向“java02”这个对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马