java - 为什么 Collections 实用程序类在 Java 中没有 Iterator 方法?

标签 java list collections iterator set

Collections 实用程序类具有对collection 进行操作的静态方法。例如, Collections.Sort(list) 对列表进行排序。

为什么不是类型的方法

static <T> Iterator<T> iterator() { }

通过这种方式,我可以获得一个遍历我的集合的迭代器

Iterator it = Colletions.iterator(list)

集合确实有 emptyIterator() 和 emptyListIterator(),但我不明白它们的用途是什么?

最佳答案

不需要 Collections.iterator(Collection) 方法,因为 Collection 接口(interface)有一个 iterator() 方法返回一个迭代器 已经。只有当您已经有一个 Collection 并且 Iterator 无论如何都与 Collection 耦合时,它才有意义。 Collections.iterator(Collection c) 会做什么?它可能只会调用 return c.iterator();

我假设 Collections.emptyIterator()Collections.emptyListIterator() 为调用者节省了创建空 Collection 的过程/List 只是为了调用它的 iterator()/listIterator() 方法。

GRASP pattern "Information Expert"将表明 Iterator 的设计将与其迭代的类一起使用,因为该类本身具有创建 Iterator 所需的信息。

关于java - 为什么 Collections 实用程序类在 Java 中没有 Iterator 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19798701/

相关文章:

Java 正则表达式 带有小字母的下划线位于左侧​​,等于中间,任意位于右侧

Java 8 : implementing Comparable

java - 在 Java 应用程序中管理时间的最佳方法是什么?

c# - 使用介于两者之间的方法将 c# List 转移到另一个列表

Java ArrayList 与 C++ std::vector

java - PowerMock 链接错误 : MockClassLoader javax/management/MBeanServer

python - 带集合的列表的不同列表

C++ 有没有办法以同样的效率组合这个列表和映射?

python - 当某些列列表值为空时如何合并包含列表值的列?

Excel VBA : Why "Sheets" collection is not a "Collection"?