实体类String [] vs List <string> </string>

时间:2011-11-15 11:00:52

标签: java hibernate

我担心在Entity类中最适合使用哪种类型的属性。在我的问题中,我有字符串属性来保持。

我想知道从以下方式及其利弊中使用什么是最佳选择。

String[] attribute;

List<String> attribute;

谢谢

5 个答案:

答案 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。