2016-01-02 92 views
-3

所以我知道Collections是一个实用工具类,Collection是一个基础接口。但是,我仍然不明白为什么Collections中的方法不能放入Collection中?只是为了让事情变得简单吗?为什么创建集合,如果我们已经有集合?

集合和集合中的方法是否存在差异?也许某些方法由不同的集合实现不同?因此,对于更通用的方法,他们被扔进实用类集合?

我想我只是好奇你怎么决定什么被扔进集合或集合的开发人员?任何人都可以提供这些例子吗?

+0

我很好奇为什么你不能把方法从集合到集合(如.sort())。开发人员如何决定将某些方法留在Collection中,以便由不同的集合(如ArrayList)专门实现,或者其他一些方法将被放入Collections以便被普遍使用? – whales

回答

8

集合是一个接口。它定义了实施Collection的所有类必须遵守的合约:有size()方法,有iterator()方法等。

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

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

  • 这是来不及做,因为集合自从Java 2存在
  • 有这么多的人,他们最好分开,以避免混乱Collection接口,并使其少可以理解的。这些静态实用方法

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

+0

非常感谢。这正是我正在寻找的答案。 – whales

相关问题