为什么这么多方法使用Collection而不是Iterable?

Svi*_*ish 8 java iterable

随着C#我逐渐喜欢这个IEnumerable<T>界面.在很多情况下,您只需要提供和接受.此外,它在.Net库中很有用.例如,你有一个List<T>类的构造函数IEnumerable<T>.

我现在必须使用Java,我自然希望使用等效的Iterable<T>接口.但是,它似乎并不像我可以在任何地方使用它.一切似乎都在使用扩展Collection<T>接口.为什么是这样?

作为一个例子,你有一个ArrayList<T>构造函数,它采用Collection<T>:

按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表.

为什么不采取Iterable<T>反而?

Pet*_*rey 5

Iterable仅在Java 5中添加.这意味着旧方法(大多数)使用集合.即使是可以采用Iterable的新方法也没有使用它.:(

我认为问题在于大多数Iterable都是Collections.

  • 我认为问题是Iterable只有一种方法不是很有用.大多数情况下使用List和Set这些是具有您可能需要的所有方法的接口.但是在开发库(如集合)时,我同意最好使用您需要的最具体的界面. (2认同)