Java中的Set
和Collection
之间是否有任何实际区别,除了Collection
可以包含两次相同的元素?他们有相同的方法。何时使用Set与Collection?
(例如,不Set
给我更多的选择使用哪一个接受Set
工具库但不Collection
S')
编辑:我能想到的至少5分不同的情况来判断这个问题。其他人能想出更多吗?我想确保我理解这里的微妙之处。
- 设计接受参数
Set
或Collection
的参数的方法。Collection
更一般,接受更多的输入可能性。 (如果我正在设计特定的班级或界面,则我对用户更为友善,如果我使用Collection
,则对我的子用户/实施者更为严格。) - 设计一种返回
Set
或Collection
的方法。Set
提供比Collection
更多的保证(即使它只是保证不包含一个元素两次)。 (如果我正在设计一个特定的类或接口,如果我使用Set
,那么对于我的消费者来说我会更好,并且对我的子类/实现者更严格。) - 设计实现接口
Set
或Collection
的类。与#2类似的问题。我的类/接口的用户可以获得更多的保证,子类/实施者有更多的责任。 - 设计一个扩展接口
Set
或Collection
的接口。与#3非常相似。 - 书写使用
Set
或Collection
的代码。在这里我不妨使用Set
;我使用Collection
的唯一理由是如果我从其他人的代码中取回Collection
,或者我必须处理包含重复项的集合。
很好的问题,但恕我直言不力的答案 – Kemoda 2013-08-30 06:26:34