Java中比较两个SET是否相同
By:Roy.LiuLast updated:2016-11-14
java api中,好像没有发现比较两个set 的内容是否一样的方法,只能自己写一个来实现了,其实也比较简单,比较记录数是否一样,然后看内容是否一致, 测试的方法如下:
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); }
走单元测试:
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"); Settest2 = new HashSet<>(); test2.add("b"); test2.add("c"); assertThat(SetUtils.equals(test1, test2), is(false)); } @Test public void test2() { Settest1 = new HashSet<>(); test1.add("a"); test1.add("b"); Settest2 = new HashSet<>(); test2.add("a"); test2.add("b"); test2.add("c"); assertThat(SetUtils.equals(test1, test2), is(false)); } @Test public void test3() { Settest1 = new HashSet<>(); test1.add("a"); test1.add("b"); test1.add("c"); Settest2 = new HashSet<>(); test2.add("a"); test2.add("b"); assertThat(SetUtils.equals(test1, test2), is(false)); } //set ignore sequence @Test public void test4() { Settest1 = new HashSet<>(); test1.add("a"); test1.add("b"); Settest2 = new HashSet<>(); test2.add("b"); test2.add("a"); assertThat(SetUtils.equals(test1, test2), is(true)); } @Test public void test5() { Settest1 = new HashSet<>(); test1.add("a"); Settest2 = new HashSet<>(); test2.add("a"); assertThat(SetUtils.equals(test1, test2), is(true)); } }
From:一号门
Previous:js处理时间,年月日,星期的公共方法
Next:多线程处理Excel思路代码.
COMMENTS