如果我们已经拥有Collection,为什么要创建集合?

时间:2016-01-02 15:58:24

标签: java collections

所以我知道Collections是一个实用程序类,Collection是一个基本接口。但是,我仍然不明白为什么收藏中的方法不能被收集到收藏中?这只是为了让事情变得更容易吗?

集合和集合中的方法之间是否存在差异?也许某些方法是由不同的集合实现的不同?因此,对于更通用的方法,它们被抛入实用程序类Collections?

我想我只是好奇你如何决定为开发人员收集什么内容?谁能提供一些这些例子?

1 个答案:

答案 0 :(得分:8)

Collection是一个界面。它定义了实现Collection的所有类必须遵守的契约:使用size()方法,使用iterator()方法等。

Collections是一个实用工具类,包含与各种集合实现相关的方法:创建一个空集,将任何列表转换为同步列表等。这些是不属于集合的方法:必须要愚蠢创建一个新的集合,以便能够创建一个空集,不是吗?

现在,使用Java 8,所有这些静态方法都可以是Collection接口的静态方法。但是

  • 现在为时已晚,因为自Java 2以来存在集合
  • 他们中有很多人最好将它们分开,以避免使收集界面混乱,并使其不易理解。

但请注意,自Java 8以来,这些静态实用程序方法中的一些(或至少一个)成为实例方法,这要归功于使用默认方法的可能性:您现在可以使用list.sort(comparator)对列表进行排序而不是使用Collections.sort(list, comparator)。当然,Collections.sort()仍然存在:删除它会破坏数百万现有程序。