【发布时间】:2010-10-23 16:38:31
【问题描述】:
除了Collection 可以包含两次相同的元素之外,Java 中的Set 和Collection 之间是否有任何实际区别?他们有相同的方法。
(例如,Set 是否为我提供了更多使用接受 Sets 但不接受 Collections 的库的选项?)
编辑:我可以想到至少 5 种不同的情况来判断这个问题。其他人能想出更多吗?我想确保我理解这里的微妙之处。
- 设计一个接受
Set或Collection参数的方法。Collection更通用,接受更多的输入可能性。 (如果我正在设计一个特定的类或接口,如果我使用Collection,我对我的消费者更好,对我的子类/实现者更严格。) - 设计一个返回
Set或Collection的方法。Set提供比Collection更多的保证(即使只是保证不包含一个元素两次)。 (如果我正在设计一个特定的类或接口,如果我使用Set,我会对我的消费者更好,对我的子类/实现者更严格。) - 设计一个实现接口
Set或Collection的类。与#2类似的问题。我的类/接口的用户得到更多保证,子类/实现者有更多责任。 - 设计一个扩展接口
Set或Collection的接口。与#3 非常相似。 - 编写使用
Set或Collection的代码。这里我不妨使用Set;我使用Collection的唯一原因是如果我从其他人的代码中返回Collection,或者我必须处理包含重复项的集合。
【问题讨论】:
标签: java collections