Groovyのコレクションフレームワークで集合演算
ほんの断片ですが、メモとして。
(動作確認: Groovy Version: 1.5.7 JVM: 1.6.0_10)
// #groupBy (指定条件でグルーピング) assert [ // ↓ ↓ 3と4でグルーピング [1, 2, 3, 4], [2, 2, 3, 4], [3, 5, 3, 4], [6, 3, 3, 4], ].groupBy{ it[2, 3] } == [[3, 4]:[[1, 2, 3, 4], [2, 2, 3, 4], [3, 5, 3, 4], [6, 3, 3, 4]]] def list1 = [1, 2, 3] def list2 = [4, 5, 6] def list3 = [3, 7, 8] // #disjoint(互いに素かどうか) assert list1.disjoint(list2) // ダブりなし assert !list1.disjoint(list3) // 3がダブる // #intersect(ダブった部分を抽出) assert [] == list1.intersect(list2) // ダブりなし assert [3] == list1.intersect(list3) // 3がダブル // #combinations(リストの組み合わせ) assert [[1, 2, 3], [4, 5, 6]].combinations() == [[1, 4], [2, 4], [3, 4], [1, 5], [2, 5], [3, 5], [1, 6], [2, 6], [3, 6]] // #transpose(リストの入れ替え) assert [[1, 2, 3], [4, 5, 6]].transpose() == [[1, 4], [2, 5], [3, 6]]