何时使用 Set vs. Collection?
- 论坛
- 何时使用 Set vs. Collection?
12 浏览
何时使用 Set vs. Collection?
除了Collection
可以包含相同的元素两次这一事实之外,Java中的Set
和Collection
之间有什么实际区别吗?它们具有相同的方法。
(例如,Set
是否为我提供了更多可以接受Set
而不接受Collection
的库的选项?)
编辑:我至少可以想到5种不同的情况来判断这个问题。还有其他人能想到更多吗?我想确保我理解这里的细微差别。
- 设计一个接受
Set
或Collection
类型参数的方法。Collection
更通用,可以接受更多的输入可能性。(如果我设计一个特定的类或接口,如果我使用Collection
,我对我的消费者更友好,对我的子类/实现者更严格。) - 设计一个返回
Set
或Collection
类型的方法。Set
提供比Collection
更多的保证(即使只是保证不包含重复元素)。 (如果我设计一个特定的类或接口,如果我使用Set
,我对我的消费者更友好,对我的子类/实现者更严格。) - 设计一个实现
Set
或Collection
接口的类。与第2点类似的问题。我的类/接口的用户得到更多的保证,子类/实现者有更多的责任。 - 设计一个扩展
Set
或Collection
接口的接口。与第3点非常相似。 - 编写使用
Set
或Collection
的代码。在这里,我可能会使用Set
;我使用Collection
的唯一原因是如果我从别人的代码中得到一个Collection
,或者如果我必须处理包含重复元素的集合。