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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡威 黑马帝   /  2012-2-1 20:31  /  1657 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当集合和迭代器都有同一对象的引用时,迭代器调用remove(),去掉的是迭代器中的引用,还是集合中的对象引用,还是both?

5 个回复

倒序浏览
迭代器是一个对象,作用就是遍历并选择序列中的对象。并没有把集合中的元素取出来。
  1. Collection<String> set = new TreeSet<String>();
  2.                 set.add("a");
  3.                 set.add("b");
  4.                 Iterator<String> it = set.iterator();
  5.                 System.out.println(set.isEmpty());
  6.                 while(it.hasNext()){
  7.                         it.next();
  8.                         it.remove();
  9.                 }
  10.                 System.out.println(set.isEmpty());
复制代码
输出的结果分别是:false
                           true
所以应该是删除了集合中的元素,因为存入集合的是对象并不是对象的引用

评分

参与人数 1技术分 +1 收起 理由
荣凯旋 + 1

查看全部评分

回复 使用道具 举报
从毕老师讲的视频看的出是删除集合中的对象,楼主可再看下老师讲迭代器的视频

评分

参与人数 1黑马币 +3 收起 理由
荣凯旋 + 3

查看全部评分

回复 使用道具 举报
当集合和迭代器都有同一对象的引用时,      集合中保存了对象的引用,迭代器则没有保存对象的引用,它只是提供了一些方法遍历集合,API :迭代器调用remove():从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。
回复 使用道具 举报
这是黑马的描述:
迭代器是取出方式,会直接访问集合中的元素。
所以将迭代器通过内部类的形式来进行描述。
通过容器的iterator()方法获取该内部类的对象。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
迭代器:个人理解为取出东西的工具。
           毕老师的例子:游戏厅里,抓布娃娃机箱中的铁爪子。
Collection<String>  con = new ArrayList<String>();
con.add("abc");
con.add("cdd");
con.add("dac");
Iterator<String> it  = con.iterator();  // 获取con的迭代器对象。
迭代器只能遍历取出元素,不能删除元素

remove 删除的是集合中的元素,要用集合的对象来调用
集合中只能存储对象,所以remove删除的就是集合中的对象。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马