为什么在Ebean中使用java.util.List而不是java.util.Set

时间:2012-11-22 12:00:11

标签: java jpa orm ebean

我看到许多例子使用List来表示“很多”关系,但是,Set似乎更好地履行了这个角色,因为查找可以在O(1)中发生,而列表搜索是O(N / 2)。有没有理由说List是首选的类型?

5 个答案:

答案 0 :(得分:3)

只有在ManyToMany关系的情况下,重复才是重要的,在其他情况下,ORM也会处理List中的重复。

答案 1 :(得分:2)

这取决于您使用的情况。

  1. Set不包含重复项,而您可以在列表中保留重复项。
  2. List按插入的顺序存储项目。

答案 2 :(得分:1)

ListSet在语义上不同。只查看查找时间是一个坏主意,可能会导致严重的问题。

List可能有重复项,Set不能重复 List也保证按索引访问,Set没有。 (虽然有些Set实现当然可能。)

答案 3 :(得分:1)

检查自己,Ebean的作者已在文章中详细解答了这个问题:

List Set Map or Collection?

您将找到每种类型的sumarized描述以及所选类型之间的比较。

答案 4 :(得分:0)

我一直认为List会保留查询到底层数据库的任何顺序。