标准迭代器实现之间的差异

时间:2014-06-21 02:17:30

标签: java iterator implementation concrete

我尝试在网站上搜索,但是有太多线程与关键字interator或实现。那么,在一个坚果shell中,各种标准迭代器实现之间有什么区别?除了.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

那么,为什么不保留人们在需要时在自定义类中实现的接口,并在所有集合中有一个具体的实现?