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]