簡體   English   中英

java獨特元素的集合

[英]java collection of unique elements

我有一個myObject的Collection coll。 只有在集合中沒有這樣的元素時,我才想添加一個元素。

我已經覆蓋了myObject的equals方法。 它檢查其20個屬性的相等性。

但是在集合的情況下,我想基於這些屬性中的一個來進行相等性檢查(以及因此添加)。

也許我的架構是有缺陷的,我不應該有兩個equals的定義,而應該有兩個不同的對象。

但是,如果沒有太多的重構,是否有可能從這里實現我想要的東西? 也就是說,我想要某種Set集合,在那里我可以告訴如何進行比較檢查。 這與Collection.sort()方法類似,您可以在其中提供比較器以檢查比較。

轉到HashSet。它將存儲唯一的值。從這里的注釋中,你必須覆蓋hashcode和equals方法以提供每個對象的唯一性。你可以在這里閱讀這兩種方法之間的關系。

您正在尋找Set和其中一個實現。

您不能使用現有容器來強制執行唯一性,因為它們都希望使用equals

如果它只是一個屬性,則可以使用Map,將該屬性作為鍵。 這將允許該屬性的每個值只有一個條目。

equalshashCode旨在與集合一起使用。 你應該改變你的設計。 也許打電話給你自己的平等(你現在擁有的)別的東西。 也許不要將這些東西直接放入集合中,而是包裝到某種適配器中。

通過使用TreeSet(比較器比較器),您不需要依賴'equals / hashCode'實現。

同樣,如果您的集合是一個列表,您可以使用比較器Collections.sort(列表列表,比較器c)對其進行排序;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM