java - 如何移动列表条目并同时更新所有条目的索引?

标签 java grails data-structures groovy grails-orm

我需要使用 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。如果列表很长,则需要进行大量更新。

  1. 是否有一种数据结构可以为我处理列表元素的重新定位?
  2. 如何有效地更新项目?

最佳答案

由于您的 int position将始终按顺序排列,您可以忘记这一点并使用数据结构的索引来获取您的位置。 (只需加 1,因为索引从 0 开始)。使用 LinkedList<String>ArrayList<String> .它们将几乎相同——无论哪种方式,您都将进行某种类型的 O(n) 操作。您将无法绕过必须遍历列表。

与其详细介绍每个数据结构的效率,this post给出了非常详尽的总结。

关于java - 如何移动列表条目并同时更新所有条目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376731/

相关文章:

java - 将字符串转换为 'Instant'

java - GRADLE Build Error:权限被拒绝:没有更多信息

java - BrowserWindowOpener 和动态 url/资源 VAADIN

java - 具有最小和最大阈值设置的池填充服务

Python 列表反转:[::-1]?

database - Grails 一直在删除我的表

grails - 如何使用createCriteria在Grails中执行深度查询

grails - 在 Grails 中使用 Spring Security 与 CAS 和 LDAP

ios - 如何判断我是否使用同一项来填充多个 UICollectionViewCell?

c++ - 使用不带参数列表的类模板(未声明的标识符)