iterator类为何要提供一个remove方法?

java中,集合类的iterator方法返回一个iterator对象,iterator对象本来是用来迭代的,为什麽要提供一个remove方法?c#中,iterator就没... java中,集合类的iterator方法返回一个iterator对象,iterator对象本来是用来迭代的,为什麽要提供一个remove方法?
c#中,iterator就没有这个remove方法.
展开
 我来答
ahyyxx222
2011-03-29 · TA获得超过2532个赞
知道小有建树答主
回答量:1405
采纳率:33%
帮助的人:1207万
展开全部
按我的想象,会用到这个方法的场景是这样的:
一个迭代器创建出来以后,也可能运行到一半的时候,有可能会有其他条件触发造成需求的变化,原有的迭代不适用了,有remove()移走其中的部分迭代对象,就不用重新建立迭代器了,执行到一半的迭代也就不需要重来了。
empty_shao
2011-04-03
知道答主
回答量:11
采纳率:0%
帮助的人:1万
展开全部
没研究iterator,我是这样理解的,iterator用来控制指针,指针用来控制集合内的元素,有remove很正常啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-02
展开全部
ger.java类中有这么一个内部类
private static class IntegerCache {
private IntegerCache(){}

static final Integer cache[] = new Integer[-(-128) + 127 + 1];

static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}

public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
这段代码,因为你用的是5.0中的自动装箱特性.从理论上来说是Integer是一个类而int是基本数据类型.一个是对象而一个是数据类型两者是不能强制类型转换的,之所以你能用(Integer)x将int类型的变量x强制类型转换成Integer,创建出一个Integer类型的对象,是因为JAVA在5.0中当类Integer.class加载的时候就帮你自动在池中创建了-128到127之间的Integer对象.当你进行强制类型转换的时候并不是将创建出一个Integer对象出来而是去池中拿出一个-128到127之间的Integer对象来给你用。所以你知道为什么不能remove掉那个元素,因为池中没有所以虚拟机从池中拿不出来所以你强制类型转换以后就什么都没有了.
如果你要程序能remove掉X元素你可以这样写:
List c = new ArrayList();
int x = 128;
c.add("hello");
c.add(new Integer(x));
System.out.println(c);
for (Iterator ii = c.iterator(); ii.hasNext();) {
if (ii.next().equals(new Integer(x))) {
ii.remove();
}
}
System.out.println(c.toString);
另外,虚机团上产品团购,超级便宜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式