まず、これは宿題のように聞こえますが、そうではありません。私が仕事で解決しようとしている問題です。
オブジェクトのリストがあります。オブジェクトには、UIのリストでの順序を示すシーケンス番号があります。例:
public class Task {
Long id;
String name;
Long seq;
}
私のUIのテーブルには、リスト内でタスクを上下に移動するための「上」リンクと「下」リンクがテーブルの各行にあります。
並べ替えを処理するために2つのメソッドを実装しています。これらのメソッドは、WebUIの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に入れてから、シーケンス番号でマップを並べ替えることを考えていました。次に、マップでtaskToMoveを見つけ、シーケンス番号を変更してから、影響を受けるすべてのタスクシーケンスを変更します。
しかし、このアプローチはエレガントではないようです。誰かが私がこれをどのように行うべきかについて何か考えを持っていますか?
ありがとう、ロブ