Java中比较两个SET是否相同

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));

    }

}



除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: set
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.