GuavaのSetsでSetの差分をとったりする

えー今更Guava-?キモーイ!Guavaの記事が許されるのは2012年までだよねー!キャハハハ!
みたいな反応が無いかgkbrしながらも、ちょっといじる機会があったので。
いやGuava全然まだ開発されてるんですけども。

AとBのSetがあってAにあってBにないもの、BにあってAにないものを抽出したい、そんなとき使えるのがSetsのdifferenceメソッドさんです。

Set<String> testSet1 = new HashSet<>();
testSet1.add("a");
testSet1.add("b");
testSet1.add("c");
Set<String> testSet2 = new HashSet<>();
testSet2.add("b");
testSet2.add("c");
testSet2.add("d");
testSet2.add("e");
Set<String> diff1 = Sets.difference(testSet1, testSet2);
Set<String> diff2 = Sets.difference(testSet2, testSet1);

このようにすると、以下のような結果が返ってきます。

diff1:[a]
diff2:[d, e]

べんり!

両方に含まれるものを抽出する場合はintersectionメソッドさんを使います。

Set<String> intersection = Sets.intersection(testSet1, testSet2);

結果は以下の通り。

intersection:[b, c]

捗る。やっぱりGuavaさんすてき。

スポンサーリンク