javaのDiffライブラリjava-diffを使う。
コレクションの差分を取るライブラリである。(LGPL)
クラスリスト
- Diff
- 差分を作る。第1引数から第2引数のコレクションを比較し、第2が第1から削除されているか追加されているかを計算する。
- Difference
- 差分を表す
実にシンプルだ。
Differenceの要素
Differenceには4つの属性があり、それぞれ比較する2つのコレクションのインデックスが入る。
- delStart
- 削除された要素の開始インデックス。最初のコレクションのインデックスである。
- delEnd
- 削除された要素の終了インデックス。Difference.NONEならば、削除は無いことを示す。
- addStart
- 追加された要素の開始インデックス。最初のコレクションのインデックスである。
- addEnd
- 追加された要素の終了インデックス。Difference.NONEならば、削除は無いことを示す。
サンプルプログラム
List differenceList = new Diff( new Object[]{"a","b","c","d"}, new Object[]{"b","c","e"} ).diff(); for(Object o : differenceList) { System.out.println(o); }
実行結果
del: [0, 0] add: [0, -1] del: [3, 3] add: [2, 2]