集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils的使用

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

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

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

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

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

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

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

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

    // 取差集[1,2]
    Collection<Integer> disColl = CollectionUtils.disjunction(list1, interColl);
    System.out.println(disColl);// 打印出[1, 2]
    }  

原文地址:https://www.cnblogs.com/lshan/p/9221214.html

时间: 2024-08-04 06:22:28

集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils的使用的相关文章

字符串工具类、数组工具类、集合工具类、转型操作工具类、编码与解码操作工具类

package hjp.smart4j.framework.util; import org.apache.commons.lang3.StringUtils; /** * 字符串工具类 */ public final class StringUtil { /** * 字符串分隔符 */ public static final String SEPARATOR=String.valueOf((char)29); /** * 判断字符串是否为空 */ public static boolean i

集合工具类 - CollectionUtil.java

集合工具类,提供数组转LIST.数组转SET.合并集合.计算笛卡儿积等方法. 源码如下:(点击下载 -  CollectionUtil.java.ArrayUtil.java.commons-lang-2.6.jar.commons-collections4-4.0.jar) 1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.Collection; 4 import java.util.Link

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

黑马程序员-集合工具类和1.5新特性

集合框架的工具类:collecttions Collections 的方法全是静态的 List没有排序功能,所以java定义了Collections工具类. 比较器无法传给list,只能传给Set.但是集合工具类有此方法 1.排序: comparable:    sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序. comparator:    sort(List<T> list, Comparator<? super T> c) 根据比

java集合工具类---Collections/Arrays

/* *Collections用于操作List/Set的工具类 *Arrays用于操作数组的工具类 */ package pack; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.TreeSet; public class Main { pu

Map集合以及Collections集合工具类

一.Collection集合主要特点与Map集合的区别 Collection: 单列集合:有两个子接口 List集合元素是有序的,可以重复的 Set集合元素是无序的,不可以重复 List:元素可重复,有序 ArrayList:底层数据结构是数组,查询快,增删慢,不同步,线程不安全,效率高:没有特殊说明一般使用ArrayList集合: Vector:底层数据结构是数组,查询快,增删慢,同步,线程安全,效率低:有一个elements()特有迭代方法: LinkedList:底层数据结构是链表,查询慢

?集合工具类使用线程

集合工具类使用线程 1. hashmap源码解析与并发可能遇见的问题 1.HashMap中的几个重要变量 static final int DEFAULT_INITIAL_CAPACITY = 16;     //默认初始容量,必须是2的n次方 static final int MAXIMUM_CAPACITY = 1 << 30;     //最大容量,当通过构造方法传入的容量比它还大时,就用这个最大容量,必须是2的n次方 static final float DEFAULT_LOAD_FA

java map接口,可变参数,Collections集合工具类

map接口的实现类存储成对的值,键--值.通过键来找到对应的值. Collection中的集合称为单列集合,Map中的集合称为双列集合 Map中常用的集合为HashMap集合.LinkedHashMap集合. HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复,需要重写键的hashCode()方法.equals()方法. LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈

Collections集合工具类

Collections集合工具类,专门用来对集合进行操作的. 常用方法: public static<T> boolean addAll(Collection<T> c,T....elements):往集合中添加一些元素 public static void shuffle(List<?> list):打乱list集合顺序 public static <T> void sort(List<?> list):将集合中的元素,按照默认规则排序,自定义