IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Java中比较两个SET是否相同

    asuncool@gmail.com(yihaomen)发表于 2016-11-14 19:47:40
    love 0
    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() {

            Set<String> test1 = new HashSet<>();
            test1.add("a");
            test1.add("b");

            Set<String> test2 = new HashSet<>();
            test2.add("b");
            test2.add("c");

            assertThat(SetUtils.equals(test1, test2), is(false));

        }

        @Test
        public void test2() {

            Set<String> test1 = new HashSet<>();
            test1.add("a");
            test1.add("b");

            Set<String> test2 = new HashSet<>();
            test2.add("a");
            test2.add("b");
            test2.add("c");

            assertThat(SetUtils.equals(test1, test2), is(false));

        }

        @Test
        public void test3() {

            Set<String> test1 = new HashSet<>();
            test1.add("a");
            test1.add("b");
            test1.add("c");

            Set<String> test2 = new HashSet<>();
            test2.add("a");
            test2.add("b");

            assertThat(SetUtils.equals(test1, test2), is(false));

        }

        //set ignore sequence
        @Test
        public void test4() {

            Set<String> test1 = new HashSet<>();
            test1.add("a");
            test1.add("b");

            Set<String> test2 = new HashSet<>();
            test2.add("b");
            test2.add("a");

            assertThat(SetUtils.equals(test1, test2), is(true));

        }

        @Test
        public void test5() {

            Set<String> test1 = new HashSet<>();
            test1.add("a");

            Set<String> test2 = new HashSet<>();
            test2.add("a");

            assertThat(SetUtils.equals(test1, test2), is(true));

        }

    }



沪ICP备19023445号-2号
友情链接