我有一个Request对象,其中包含一个Approvers列表.审批人具有名称和批准职位.
马修
标记
卢克
约翰
最终,请求将从Mathew开始并在John处结束.
我需要能够重新订购这些允许添加和删除,如下所述.
批准人可以 -
在某个位置添加 - 即.在第3位添加Peter,在这种情况下新订单将是
马修
标记
彼得
卢克
约翰
删除 - 即.删除标记新订单的情况
马修
卢克
约翰
编辑 - 即您可以将John的位置更改为1,在这种情况下新订单是
约翰
马修
标记
卢克
我已经提出了许多解决方案,但是没有一个是特别优雅的.
任何帮助将非常感激
这些名单可能有多大?List
可能是集合中最简单的表示形式,但这意味着每次插入或从列表中间删除时都需要复制."编辑"列表基本上意味着删除/插入.
迭代很简单.
另一种方法可能是LinkedList
- 如果您挂在LinkedListNode
与每个批准者关联的链接上,这会使迭代变得简单,"插入后","插入前"和"删除"便宜.但是这并不容易说"这个评论者现在应该在第3位" - 你必须先迭代才能找到第3位(或者2位,无论如何).如果这是"在此之后移动此批准者"的情况,那么它是理想的.