我需要使用 Java/Grails GORM 应用程序执行以下操作。
我有一个领域类项目:
class Item {
int position
String name
}
当我创建一个项目列表时,我可以更新 position 属性,使其代表列表中每个项目的索引:0,1,2,3,... 每个位置都是唯一的,即在每个位置只能是一项。
它应该能够改变项目的顺序。假设我有以下项目列表和位置:
A1, A2, A3, A4, A5
1 2 3 4 5
当我希望 A4 位于位置 2 时,我必须分别更新 A2、A3 和 的位置。这意味着我必须更新三个数据库条目 A4、A2 和 A3。如果列表很长,则需要进行大量更新。
- 是否有一种数据结构可以为我处理列表元素的重新定位?
- 如何有效地更新项目?
最佳答案
由于您的 int position
将始终按顺序排列,您可以忘记这一点并使用数据结构的索引来获取您的位置。 (只需加 1,因为索引从 0 开始)。使用 LinkedList<String>
或 ArrayList<String>
.它们将几乎相同——无论哪种方式,您都将进行某种类型的 O(n) 操作。您将无法绕过必须遍历列表。
与其详细介绍每个数据结构的效率,this post给出了非常详尽的总结。
关于java - 如何移动列表条目并同时更新所有条目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376731/