Java –如何比较两个集合

在Java中,没有现成的make API可以比较两个java.util.Set

1.解决方案

这是我的实现,结合check size + containsAll

SetUtils.java
package com.mkyong.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.mkyong.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() {

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

    }

}

运行它,所有单元测试都将通过。

参考文献

  1. java.util.Set JavaDoc

翻译自: https://mkyong.com/java/java-how-to-compare-two-sets/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值