簡體   English   中英

何時在Java中使用Enum或Collection

[英]When to use Enum or Collection in Java

在什么情況下枚舉更適合比例如保證獨特元素的集合(java.util.Set的實現者,我猜......)?

(這是我之前的問題的后續跟進)

基本上,它是一個定義明確,固定的值集,在編譯時已知。

您可以非常輕松地使用枚舉作為一個集合(使用EnumSet ),它允許您定義行為,按名稱引用元素,打開它們等。

當元素事先知道並且不會改變時,枚舉是合適的。

如果元素可以在運行時更改,請使用Set。

我不是java大師,但我猜想當你想要保證某個價值池時使用枚舉,並且當你想要保證唯一性時使用一個集合。 示例是枚舉一周中的幾天(不能有“基金會”)並擁有一個SSN集合(我知道通用示例!)

很好的回答 - 我會嘗試總結,如果只是為了我自己的參考 - 看起來你應該在兩種情況下使用枚舉:

您需要的所有值在編譯時都是已知的,以及以下任一或兩者:

  • 你想要比通常的集合實現更好的性能
  • 您希望將潛在值限制為在編譯時指定的值

通過Jon提供的Collection over enumeration鏈接,您可以獲得枚舉性能和安全性作為實現細節的好處,而無需將其整合到您的整體設計中。

社區維基,請根據需要進行編輯和改進!

注意:您可以同時使用EnumSet。

在某些情況下,您的業務需要創建新項目,但同時業務邏輯需要基於某些固定項目。 對於你想要枚舉的固定的,新的顯然需要某種收集/ db。

我已經看到使用集合來處理這類項目的項目,導致業務邏輯取決於可以被用戶刪除的數據。 永遠不要這樣做,但是根據需要,為固定的枚舉創建單獨的枚舉,為其他枚舉創建集合。

另一種解決方案是使用具有不可變對象的集合作為固定值。 這些項目也可以駐留在數據庫中,但是有一個額外的標志,因此用戶無法更新/刪除它。

暫無
暫無

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

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