我担心在Entity类中最适合使用哪种类型的属性。在我的问题中,我有字符串属性来保持。
我想知道从以下方式及其利弊中使用什么是最佳选择。
String[] attribute;
List<String> attribute;
谢谢
答案 0 :(得分:2)
在String []属性中; 它将具有固定的内存大小和List属性; 它是一个字符串类型的arraylist。您可以使用arraylist对象的add方法为其添加任意数量的字符串。
答案 1 :(得分:2)
如果您有一个要预先绑定的字符串,请使用基本的String
字段。如果您有固定数量的字符串,请使用String[]
。如果您不知道可能有多少个字符串,请使用List<String>
。
但是,我认为List<String>
通常优于String[]
答案 2 :(得分:2)
我会选择List<?>
,因为hibernate使用集合然后修复列表(数组)更自然。换句话说,使用list有更多的灵活性,因为你可以在它的几个实现之间进行选择。这为您提供了灵活且易于管理的代码。
但最后的决定,对你来说,你将如何使用该对象。
我更喜欢使用Collection,因为有很多工具可以将数组转换为集合以获得一些优势,例如common.collections。
答案 3 :(得分:2)
取决于您的需求。 String []将始终为固定大小,但它比列表更快。如果存储的变量总是相同,并考虑性能,请使用String []。
如果你不期望大量的字符串,更好的是使用列表。列表可调整大小,是集合的一部分。 列表很灵活。例如,如果您需要通过 ArrayList 进行同步,则只需使用:
Collections.synchronizedList(new ArrayList());
使用 List 接口,您可以轻松切换到不同的实现。
最后,您始终可以使用toArray()
方法从 ArrayList 获取Array,例如,以获得某些操作的更快处理时间。
ArrayLists 提供对元素的随机访问,代价是在列表中间插入和删除元素的速度较慢。在这种情况下,您应该考虑使用 List 接口的 LinkedList 实现。
答案 4 :(得分:0)
String []在初始化时会有一个固定的大小,因此即使数组中没有项目也会有固定的内存大小。
列表会增大/缩小其大小,从而增加其内存利用率,因为列表中添加/删除了String类型的元素。
如果您想根据需要添加/删除项目,并且不需要固定大小的数组,建议使用List。