首先,这听起来像是家庭作业,但事实并非如此。只是我在工作中试图解决的一个问题。
我有一个对象列表,这些对象有一个序列号,表示它们在 UI 列表中的顺序。例子:
public class Task {
Long id;
String name;
Long seq;
}
我的 UI 中的表格在表格的每一行上都有“向上”和“向下”链接,用于在列表中上下移动任务。
我正在实现两种方法来处理重新排序。这些方法由 Web UI 中的 ajax 调用。
public void incTaskSeq(List<Task> allTasks, Task taskToMove)
例如; 如果我有 t1.seq=1, t2.seq=2, t3.seq=3, t4.seq=4, t5.seq=5 并且我想增加 t3 的位置,那么 t3.seq 变为 4,并且t4.seq 必须变为 3。
public void decTaskSeq(List<Task> allTasks, Task taskToMove)
相似地; 如果我有 t1.seq=1, t2.seq=2, t4.seq=3, t3.seq=4, t5.seq=5 并且我想减少 t4 的位置,那么 t4.seq 变为 2,并且t2.seq 必须变为 3。导致:
t1.seq=1, t4.seq=2, t2.seq=3, t3.seq=4, t5.seq=5
我有点坚持最好的方法来做到这一点。
我正在考虑将所有任务放在 HashMap 中,然后按序列号对地图进行排序。然后在map中定位taskToMove,更改序列号,然后更改所有受影响的任务序列。
但这种方法似乎不优雅。有谁知道我应该怎么做?
谢谢,罗伯