集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils探究

        之前一直以为集合工具类只有CollectionUtils,主要用它的isEmpty(final Collection coll)静态方法来判断一个给定的集合是否为null或者是否长度为0。最近才发现此工具类还可以取集合的交集、并集、甚至差集,集合1:[1,2,3,4],集合2:[3,4,5,6]

      上面两个集合取交集的结果是[3,4],CollectionUtils工具类提供了Collection intersection(final Iterable a, final Iterable b)静态方法来取交集,参数传两个集合,可以是list,也可以是set,甚至一个list,一个set;

      上面两个集合取并集的结果是[1,2,3,4,5,6],CollectionUtils工具类提供了Collection union(final Iterable a, final Iterable b) ,参数同取交集类似;

      CollectionUtils工具类也提供了取差集的静态方法Collection disjunction(final Iterable a, final Iterable b),如果操作上面两个集合的话(第一个集合减去第二个集合),结果是[1,2,5,6],这个效果其实是两个集合的并集减去这两个集合的交集。但是实际开发中,我们可能更想要得到[1,2],CollectionUtils工具类并没有提供能直接达到这种效果的方法,不过我们可以通过两个方法的合作来达到这种效果,即用第一个集合减去这两个集合的交集:

public static void main(String[] args) {
	List list1 = new ArrayList();
	list1.add(1);
	list1.add(2);
	list1.add(3);
	list1.add(4);

	List list2 = new ArrayList();
	list2.add(3);
	list2.add(4);
	list2.add(5);
	list2.add(6);

	// 取交集[3, 4]
	Collection interColl = CollectionUtils.intersection(list1, list2);
	System.out.println(interColl);// 打印出[3, 4]

	// 取并集[1, 2, 3, 4, 5, 6]
	Collection unionColl = CollectionUtils.union(list1, list2);
	System.out.println(unionColl);// 打印出[1, 2, 3, 4, 5, 6]

	// 取差集[1,2]
	Collection disColl = CollectionUtils.disjunction(list1, interColl);
	System.out.println(disColl);// 打印出[1, 2]
	}
      除了上面介绍的方法外,CollectionUtils工具类还有好多其他常用的静态方法。除了CollectionUtils工具类外,还有ListUtils、SetUtils工具类,里面也有好多使用的静态方法。然而CollectionUtils只能操作集合,从传的参数是Iterable对象就可看出,但是Map接口并没有继承Iterable接口,那么如何操作Map对象呢?惊喜的发现竟然还有MapUtils,真是喜大普奔。总之,以后处理List、Set、Map时,如果要用公用方法,优先从这些工具类里去查,实在不行,再写自己的工具方法。


你可能感兴趣的:(工具类)