您的位置:

判断集合是否为空的多个方面分析

一、判断集合是否为空集

判断一个集合是否为空集,可以通过isEmpty()方法进行判断。

    Set<String> set = new HashSet<>();
    if (set.isEmpty()) {
        System.out.println("Set is empty");
    }

isEmpty()是Collection接口中的方法,因此对于List、Set、Queue等接口的实现类都可以使用该方法。当集合中的元素个数为0时,返回true,否则返回false。

除了使用isEmpty()方法,我们也可以使用集合的size()方法来进行判断,如果元素个数为0,那么表示该集合为空。

    Set<String> set = new HashSet<>();
    if (set.size() == 0) {
        System.out.println("Set is empty");
    }

二、判断集合是否为空collections

对于需要对集合进行判空的情况,可以使用Java开发包中的Collections类。该类提供了emptyXxx()方法,可以方便地创建空的集合。

    List<String> list = Collections.emptyList();
    Set<String> set = Collections.emptySet();
    Map<String, String> map = Collections.emptyMap();

这样创建出的集合是不可变的,也就是说不能往里面添加任何元素。但是对于不能修改的集合,isEmpty()方法也可以正确判断是否为空。

三、判断集合是否为空的方法

除了使用isEmpty()和size()方法来判断集合是否为空以外,Java还提供了以下方法:

1. Collections.frequency()

Collections.frequency()方法可以统计集合中指定元素出现的次数。如果指定元素为null,则表示集合中null值的个数。

    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    int count = Collections.frequency(list, "c"); // count为0

对于只关注是否为空的情况,可以使用以下代码判断:

    List<String> list = new ArrayList<>();
    if (Collections.frequency(list, null) == list.size()) {
        System.out.println("List is empty");
    }

2. Apache Commons CollectionUtils.isEmpty()

Apache Commons Collections是一个提供了很多实用工具集的库,里面包含了一个判断集合是否为空的方法isEmpty()。

    List<String> list = new ArrayList<>();
    if (CollectionUtils.isEmpty(list)) {
        System.out.println("List is empty");
    }

四、判断集合是否为空的工具类

除了上述方法外,我们可以封装一个判断集合是否为空的工具类,使得代码更加简洁明了。

public class CollectionUtil {
    /**
     * 判断集合是否为空
     *
     * @param collection 集合类
     * @param         泛型类型
     * @return 如果集合为空,返回true;否则返回false
     */
    public static <T> boolean isEmpty(Collection<T> collection) {
        return collection == null || collection.isEmpty();
    }
}

  

这样,在使用时就可以直接调用该方法进行判断。

    List<String> list = new ArrayList<>();
    if (CollectionUtil.isEmpty(list)) {
        System.out.println("List is empty");
    }

五、判断集合是否为子空间

有时候需要判断一个集合是否是另一个集合的子空间,也就是说两个集合元素是否完全相同,可以使用containsAll()方法进行判断。

    List<String> list1 = Arrays.asList("a", "b");
    List<String> list2 = Arrays.asList("b", "a");
    if (list1.containsAll(list2) && list2.containsAll(list1)) {
        System.out.println("List1 and list2 are equal");
    }

六、判断集合是否为空的最优方法

判断集合是否为空,通常来说使用isEmpty()方法是最简洁、最优的方法。Java的所有集合类都实现了该方法。

七、如何判断集合是否为空

根据以上讨论,可以总结出如何判断集合是否为空的方法:

  • isEmpty()方法
  • size()方法
  • Collections.frequency()方法
  • Apache Commons CollectionUtils.isEmpty()方法
  • 自定义工具类

八、判断数组是否为空

除了集合,对于数组也有判断是否为空的方法,可以通过数组的长度length属性来进行判断。

    int[] array = {};
    if (array.length == 0) {
        System.out.println("Array is empty");
    }

对于数组也可以封装一个判断是否为空的工具类。

public class ArrayUtil {
    /**
     * 判断数组是否为空
     *
     * @param array 数组
     * @param    泛型类型
     * @return 如果数组为空,返回true;否则返回false
     */
    public static <T> boolean isEmpty(T[] array) {
        return array == null || array.length == 0;
    }
}

  

这样,在使用时就可以直接调用该方法进行判断。

    String[] array = {};
    if (ArrayUtil.isEmpty(array)) {
        System.out.println("Array is empty");
    }