所以我知道Collections是一个实用工具类,Collection是一个基础接口。但是,我仍然不明白为什么Collections中的方法不能放入Collection中?只是为了让事情变得简单吗?为什么创建集合,如果我们已经有集合?
集合和集合中的方法是否存在差异?也许某些方法由不同的集合实现不同?因此,对于更通用的方法,他们被扔进实用类集合?
我想我只是好奇你怎么决定什么被扔进集合或集合的开发人员?任何人都可以提供这些例子吗?
所以我知道Collections是一个实用工具类,Collection是一个基础接口。但是,我仍然不明白为什么Collections中的方法不能放入Collection中?只是为了让事情变得简单吗?为什么创建集合,如果我们已经有集合?
集合和集合中的方法是否存在差异?也许某些方法由不同的集合实现不同?因此,对于更通用的方法,他们被扔进实用类集合?
我想我只是好奇你怎么决定什么被扔进集合或集合的开发人员?任何人都可以提供这些例子吗?
集合是一个接口。它定义了实施Collection的所有类必须遵守的合约:有size()
方法,有iterator()
方法等。
集合是一个实用类,包含与各种集合实现相关的方法:创建一个空集,转换任何列表进入一个同步列表等等。这些是不属于集合的方法:为了能够创建一个空集而创建一个新的集合将是愚蠢的,不是吗?
现在,在Java 8中,所有这些静态方法都可以是Collection接口的静态方法。但
注意,然而,自从Java 8,一些(或至少一个)成为一个实例方法,这要归功于其默认方法的可能性:你可以现在排序列表使用list.sort(comparator)
,而不是使用Collections.sort(list, comparator)
。当然,Collections.sort()
仍然存在:删除它会破坏数百万现有的程序。
非常感谢。这正是我正在寻找的答案。 – whales
我很好奇为什么你不能把方法从集合到集合(如.sort())。开发人员如何决定将某些方法留在Collection中,以便由不同的集合(如ArrayList)专门实现,或者其他一些方法将被放入Collections以便被普遍使用? – whales