[菜鸟提问] Java关于Interator的问题

问题一
图片说明
图片说明

如上面两图所示,为啥在循环体中先“remove”后“print”结果“云南铜业”还是能被打出来?

问题二
图片说明

为什么不让Stocks直接继承Interator,然后遍历,却要赋值给Interator I?

问题三
图片说明

。。为啥继承接口报错。。。。

不好意思问的会不会太多。。。。

1、it.remove的把Iterator中移除该对象,打印的是stock,和iterator一点关系都没有。就好像碗(Iterator)里有3块肉,拿出一块肉(stock),只是碗里没了。但肉还存在。
2、为什么不继承不是简单说说的,你这里用觉得这么方便,别人用for(int i=0;i<stocks.size();i++)循环还觉得不方便
3、能实现接口,只是你没有import java.util.Iterator;和实现接口

第一个问题,
it.remove(stock);
stocks.remove(stock);
第二个问题,Stocks可以继承Iterator,然后在iterator中返回this。但是将迭代器和对象分离,你可以写不同的迭代器,而不必只有一个。在设计模式中,这种分离叫做外部迭代器模式。
第三个问题,看下错误提示,是导入的包不对,还是因为你没有实现对应的方法,还是定义重复。

另外,下次贴出完整代码,而不是截图,这样比较容易办你调试,而且完整的代码更容易告诉你错在哪里。

记得及时采纳。

首先要明白stock是引用变量,指向一片内存。虽然集合中将某一个stock移除,但是stock引用的指向没有改变。