Guava collections -- Sets

Guava全文介绍地址:Google Guava
这次主要介绍是的是com.google.common.collect.Sets.主要的作用是就与Java Set相关的静态的实用方法。在Guava中与之类似的还有Lists,Maps以及Queues这些类。
下面就介绍一个Sets的主要用法:

1、笛卡尔集
    @Test
    public void testCartesianProduct(){
        Set<String> s1 = Sets.newHashSet("Foo","Bar");
        Set<String> s2 = Sets.newHashSet("Jim","Bob");
        Set<List<String>> cartesian  = Sets.cartesianProduct(s1, s2);
        List<String> list = Lists.newArrayList();
        list.add("Foo");
        list.add("Jim");
        assertThat(cartesian.contains(list),is(true));
        list.clear();
        list.add("Foo");
        list.add("Bob");
        assertThat(cartesian.contains(list),is(true));
        list.clear();
        list.add("Bar");
        list.add("Jim");
        assertThat(cartesian.contains(list),is(true));
        list.clear();
        list.add("Bar");
        list.add("Bob");
        assertThat(cartesian.contains(list),is(true));
    }
2、返回2个set前一个包含后一个不包含的所有的元素
    @Test
    public void testSetDifference() {
        Set<String> s1 = Sets.newHashSet("1","2","3");
        Set<String> s2 = Sets.newHashSet("3","2","4");
        Sets.SetView<String> sv = Sets.difference(s1,s2);
        assertThat(sv.size()==1 && sv.contains("1"),is(true));

        sv = Sets.difference(s2,s1);
        assertThat(sv.size()==1 && sv.contains("4"),is(true));
    }
3、返回2个set,共同元素以外的所有元素
    @Test
    public void testSymmetricDifference(){
        Set<String> s1 = Sets.newHashSet("1","2","3");
        Set<String> s2 = Sets.newHashSet("3","2","4");
        Sets.SetView<String> sv = Sets.symmetricDifference(s1,s2);
        assertThat(sv.size()==2 && sv.contains("1") && sv.contains("4"),is(true));
    }
4、返回2个set的交集
    @Test
    public void testIntersection(){
        Set<String> s1 = Sets.newHashSet("1","2","3");
        Set<String> s2 = Sets.newHashSet("3","2","4");
        Sets.SetView<String> sv = Sets.intersection(s1,s2);
        assertThat(sv.size()==2 && sv.contains("2") && sv.contains("3"),is(true));
    }
5、返回2个set的并集
    @Test
    public void testUnion(){
        Set<String> s1 = Sets.newHashSet("1","2","3");
        Set<String> s2 = Sets.newHashSet("3","2","4");
        Sets.SetView<String> sv = Sets.union(s1,s2);
        assertThat(sv.size()==4 &&
                sv.contains("2") &&
                sv.contains("3") &&
                sv.contains("4") &&
                sv.contains("1"),is(true));
    }

呵呵,全是数学中的集合操作。当然Sets也可以和Predicate结合起来进行函数式编程。
更多功能等待你的发现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值