我没有任何特别想法让我的收藏品订购或不允许复制品在集合中。在我的实体课中,我应该使用什么?设置还是列表?在性能方面有任何考虑吗?
让我们说我们想对这个实体执行CRUD操作。我不希望订购结果。那我该怎么用?在实体中列出或设置。应该是什么用户才能最大限度地提高性能
在考虑性能的实体中使用List和Set的有效情况是什么?不是为了订购或限制重复?
答案 0 :(得分:2)
正如vels4j在评论链接中给出的另一篇文章所述,以下情况绝对正确。
列表:允许包含重复元素。
设置:所有元素都应该是唯一的。
如果你谈论表现,我知道的一点如下:
如果您选择List
&使用Hiberante将其映射到表,您需要添加一个额外的列作为索引。此列将作为List
中元素的位置/索引/顺序,因为List
是有序集合。有关索引的详细信息,请参阅this。
如果Set
,则不需要此列。
现在举个例子,你需要从List/Set
中删除一个元素。
如果是List
,删除元素后,您需要更新List的所有其他元素以更新其索引。这是一个开销。
如果是Set
,因为你没有索引列,你不必担心其他元素的索引。
所以我的建议是:如果您在从数据库中提取集合时不需要您的集合,则应该使用Set
。
答案 1 :(得分:0)
在HashSet
O(1)
中按值查找元素。在ArrayList
中,它是O(n)
。但字典结构HashSet
可能比ArrayList
慢一点。 ArrayLists
随机访问速度更快。