以下哪个声明是正确选择分配适当内存量的声明。方案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