java – 重新设置项目而不更改所有项目的排名

我有一个项目列表,每个项目都有一个与之关联的排名.

Item 1, Rank=1
Item 2, Rank=2
Item 3, Rank=3
Item 4, Rank=4
Item 5, Rank=5

我想设计一种方法来处理项目的重新排名,其他项目的排名变化很小或没有变化.

我想到的一个解决方案是利用小数并使用Java的双变量类型.因此,例如,如果我在item2和item3之间移动item5,那么这将是输出 –

Item 1, Rank=1
Item 2, Rank=2
Item 5, Rank=2.5
Item 3, Rank=3
Item 4, Rank=4

等等,

Item 1, Rank=1
Item 2, Rank=2
Item 4, Rank=2.25
Item 5, Rank=2.5
Item 3, Rank=3

这个解决方案有效,但经过一段时间(在相同位置移动约55次,达到双变量限制,我可能必须在此时重置所有等级)

我只是想知道是否有更好的方法来解决这个问题?

要记住一些事情.

>我需要将这个数据结构存储在一个数据库(Item,Rank)中,我将构建一个Web服务,它根据排名获得排序顺序的所有项目,因此我将进行数据库调用以获取所有项目的排序排名领域.
>我将使用Java,因此我只能处理Java变量.

解决方法:

如何编写一个小程序,均匀地分配数组(或列表或其他)中一系列元素的排名值?

如果在位置x处插入新元素,则将范围x-1 .. x 1的元素传递到子例程中.开始和结束位置的等级值保持不变,其他等级用偶数距离计算.如果成功,返回true.现在,如果距离变得太小而返回false,则调用者将范围扩展到x-2 .. x 2并再次进入子例程.

你必须要小心打击数组边界,甚至完全耗尽价值空间.

上一篇:EXCEL工作表保护密码忘记了,如何撤消工作表保护?


下一篇:Day7_100days of code in python