以下哪個聲明是正確選擇分配適當內存量的聲明。方案1的初始收集能力爲0,方案2的初始容量爲10,方案3沒有聲明任何東西。您將如何聲明OneToMany成員變量
如果底層ORM提供程序最終加載這些對象,是不是使用setEmails(..)方法來設置Collection的值。如果是這樣,只要在選項3中聲明這一點是有意義的,這樣我就可以避免不必要的內存分配。
Option 1
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Email> emails = new HashSet<Email>(0);
或
Option 2
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Email> emails = new HashSet<Email>();
或
Option 3
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Email> emails;
選項2具有16的能力在這裏;) – Bozho 2010-09-01 05:44:47
得到了與擁有10 – user339108 2010-09-01 05:48:43
選項默認值爲1的容量,無論出於何種nitpickery它值得一列表困惑,也有容量爲1。(對於常規的Sun HashSet實現) – Affe 2010-09-01 07:08:29