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结合起来进行函数式编程。
更多功能等待你的发现。