【发布时间】:2014-06-21 02:17:30
【问题描述】:
我尝试在该站点上进行搜索,但是带有关键字 interator 或 implementation 的线程太多。那么,简而言之,各种标准迭代器实现之间有什么区别?除了 .getClass() 返回不同的字符串之外,我没有注意到任何不同。
List myList = (List) Arrays.asList("a", "b", "c", "d");
Set hashSet = new HashSet<String>();
Set treeSet = new TreeSet<String>();
ArrayList arrayList = new ArrayList<String>();
System.out.println(arrayList.iterator().getClass());//ArrayList
System.out.println(hashSet.iterator().getClass());//HashSet
System.out.println(myList.iterator().getClass());//List produced by Arrays.asList()
System.out.println(treeSet.iterator().getClass());//TreeSet
结果如下:
class java.util.ArrayList$Itr
class java.util.HashMap$KeyIterator
class java.util.AbstractList$Itr
class java.util.TreeMap$KeyIterator
那么,如果需要,为什么不在自定义类中保留供人们实现的接口,并在所有集合中都有一个具体的实现呢?
【问题讨论】:
-
HashMap 和 TreeMap 不是 Collections 接口的一部分
-
@Amir 他们没有实现
Collection,但它们是Oracle 称之为the collections framework 的一部分。
标签: java iterator implementation concrete