Java – 2つのセットを比較する方法
Javaには、2つのjava.util.Set
を比較するための既製のAPIはありません。
1. 溶液
これが私の実装です。check size + containsAll
を組み合わせてください:
SetUtils.java
package com.example.core.utils; import java.util.Set; public class SetUtils { public static boolean equals(Set set1, Set set2){ if(set1 == null || set2 ==null){ return false; } if(set1.size()!=set2.size()){ return false; } return set1.containsAll(set2); } }
2. 単体テスト
上記のSetUtils.java
のユニットテスト
TestSetUtils.java
package com.example.core.utils; import org.junit.Test; import java.util.HashSet; import java.util.Set; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; public class TestSetUtils { @Test public void test1() { Settest1 = new HashSet<>(); test1.add("a"); test1.add("b"); Set test2 = new HashSet<>(); test2.add("b"); test2.add("c"); assertThat(SetUtils.equals(test1, test2), is(false)); } @Test public void test2() { Set test1 = new HashSet<>(); test1.add("a"); test1.add("b"); Set test2 = new HashSet<>(); test2.add("a"); test2.add("b"); test2.add("c"); assertThat(SetUtils.equals(test1, test2), is(false)); } @Test public void test3() { Set test1 = new HashSet<>(); test1.add("a"); test1.add("b"); test1.add("c"); Set test2 = new HashSet<>(); test2.add("a"); test2.add("b"); assertThat(SetUtils.equals(test1, test2), is(false)); } //set ignore sequence @Test public void test4() { Set test1 = new HashSet<>(); test1.add("a"); test1.add("b"); Set test2 = new HashSet<>(); test2.add("b"); test2.add("a"); assertThat(SetUtils.equals(test1, test2), is(true)); } @Test public void test5() { Set test1 = new HashSet<>(); test1.add("a"); Set test2 = new HashSet<>(); test2.add("a"); assertThat(SetUtils.equals(test1, test2), is(true)); } }
それを実行すると、すべての単体テストに合格します。