来自这里的相同答案https://stackoverflow.com/a/49956113/10608
解决方案:制作index
一个字符串(因为字符串本质上具有无限的“任意精度”)。或者,如果您使用整数,请增加index
100而不是1。
性能问题是这样的:两个已排序项目之间没有“介于”值。
item index
-----------------
gizmo 1
<<------ Oh no! no room between 1 and 2.
This requires incrementing _every_ item after it
gadget 2
gear 3
toolkit 4
box 5
而是这样做(以下更好的解决方案):
item index
-----------------
gizmo 100
<<------ Sweet :). I can re-order 99 (!) items here
without having to change anything else
gadget 200
gear 300
toolkit 400
box 500
更好的是:这是Jira解决此问题的方法。它们的“等级”(您所谓的索引)是一个字符串值,可在排名项目之间留出大量的喘息空间。
这是我使用的jira数据库的真实示例
id | jira_rank
---------+------------
AP-2405 | 0|hzztxk:
ES-213 | 0|hzztxs:
AP-2660 | 0|hzztzc:
AP-2688 | 0|hzztzk:
AP-2643 | 0|hzztzs:
AP-2208 | 0|hzztzw:
AP-2700 | 0|hzztzy:
AP-2702 | 0|hzztzz:
AP-2411 | 0|hzztzz:i
AP-2440 | 0|hzztzz:r
注意这个例子hzztzz:i
。串级的好处是,你用完了两个项目之间的房间,你仍然不必重新排序别的。您只需开始在字符串中附加更多字符以缩小焦点。