
从现有的 API 中看 Enumeration 仅迭代,而 Iterator 则添加了修改 *** 作,只要实现类确保修改过程本身在语义上是一致的即可,比如普通的 Iterator 允许删除当前索引位置指向的元素,因为它不会导致已经获取的索引位置失效,因此允许,而 ListIterator 则进一步支持其它 *** 作,只要实现类能确保迭代过程是一致的,可预期的。不会导致随机的意外结果发生,比如在多线程环境中,现有的多数非线程安全的集合类的迭代器都会检测并发修改冲突,这就是它们“确保结果是可预期的”的一种方法,虽然这并没有彻底解决问题,但性能和安全在这种情况下不可兼顾时 API 的使用者需要自己确保正确地使用了这个 API。
标准解释很多地方都有就不贴了。
通俗地解释一下方便理解:
遍,就是全部,历,就是经历,可以理解为查看或者取出。
简单的理解就是全部内容都看一遍。
比如一个数组a包含[1,2,3,4,5],遍历数组就是指用一个循环或迭代器,把这5个数一个个取出来,打印或者做点其它什么 *** 作。
数组遍历就是数组的全部元素看一遍
树遍历就树的所有节点都看一遍
链表遍历就是链表全部节点都看一遍
刚学的时候我也有这样的疑惑,遍历是什么意思,定义的文字太多,描述的概念太深奥看不懂,理解以后才发现,写个for循环把数组打印出来就算遍历一次了,遍历就是在做这么简单的一件事。
希望我的解释对你的理解有帮助。
for each循环.例如:
ArrayList<Object>list = new ArrayList<Object>()
for(Object l:list){
System.out.println(l)
}
LinkedList<Object>list = new LinkedList<Object>()
for(Object l:list){
System.out.println(l)
}
HashSet<Object>set = new HashSet<Object>()
for(Object s:set){
System.out.println(s)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)