2011-11-15 46 views
-1

我关心什么类型的属性最适合在Entity类中使用。在我的问题,我有字符串属性来坚持。实体类String [] vs列表<String>

我想知道什么是最好的选择使用从以下方式及其优点和缺点。

String[] attribute; 

List<String> attribute; 

谢谢

+0

任何想法你将使用什么样的List接口实现? – hovanessyan

+0

从何时起Hibernate完成JDO?它没有,所以删除了JDO标签 – DataNucleus

回答

2

在字符串[]属性; 它将有固定的内存大小和List属性; 它是一个string类型的数组列表。您可以使用addList方法为arraylist对象添加任意数量的字符串。

+0

String []是和数组。在列表中也使用了一个数组,但我们不必声明它的大小。 –

+0

不正确。您可以将任意数量的字符串存储在数组中,但它不是动态的,如果您需要超过指定的数量,则必须“重新分配”它。 – zeller

0

String当初始化[]将具有固定的尺寸,因此将具有即使物品不存在于阵列中的固定存储器大小。

列表将增长/缩小其尺寸,从而它的存储器利用率,为String类型的元素被添加/从列表中移除。

建议,将您要添加/删除需要的基础上的项目,并没有一个固定大小的数组的需求情况下使用List。

2

如果你有一个字符串presist,使用基本String场。如果您有固定数量的字符串,请使用String[]。如果您不知道可能有多少个字符串,请使用List<String>。 但是,我认为List<String>通常最好在String[]

2

我会去List<?>,因为它是更自然休眠与收集,然后固定列表(阵列)工作。换句话说,在列表中你有更大的灵活性,因为你可以在几个实现中进行选择。这使您可以灵活方便地管理代码。

但是最后的决定是,你如何使用这个对象。

  • 做的元素的顺序是非常重要的?
  • 元素的数量经常变化吗?
  • 你对它做了很多操作吗?

我更喜欢使用Collection,因为存在大量的工具,其中数组应该转换为集合以获得一些优势,例如common.collections。

2

取决于您的需求。字符串[]将始终为,固定大小为,但速度快于列表。如果您存储的变量始终是相同的计数,并且考虑到性能,请使用String []。

如果您不希望大量的字符串,最好是使用列表。列表是可调整大小,并且是集合的一部分。 列表是灵活的。例如,如果你需要在一个ArrayList的同步你可以简单地使用:

Collections.synchronizedList(new ArrayList()); 

使用列表接口,让您有机会轻松地切换不同的实现。

在结束时,可以总是从ArrayList中获得阵列,使用toArray()方法中,例如以获得用于特定操作更快的处理时间。 ArrayLists提供随机访问元素,代价是在列表中间插入和删除元素的速度较慢。在这种情况下,您应该考虑使用LinkedList执行列表接口。

+0

ArrayList与数组一样快,因为它是一个由数组支持的随机访问集合。 – zeller

+0

是的,但是当你改变尺寸时,你需要时间来重新定位元素。固定数组大小不需要。 – hovanessyan

+0

是的,是的,但如果您在创建之前知道集合的大小,则不必重新分配它。 :)因此,对于固定大小的集合ArrayList也可能是一个不错的选择。 – zeller

相关问题