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