问题一
如上面两图所示,为啥在循环体中先“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引用的指向没有改变。