java-collection中的null,isEmpty用法

目录
  • collection中的null,isEmpty用法
    • 第一种情况
    • 第二种情况
    • 第三种情况
  • CollectionUtils.isEmpty和==null的区别
    • 本文所指的CollectionUtils所属包
    • 举个例子

collection中的null,isEmpty用法

只使用java utils包的isEmpty.

第一种情况

实例化list,但是size为空。

    List<String> list =new ArrayList<>();
        if (list.isEmpty()) {
            System.out.println("1");
        }
        if (!list.isEmpty()) {
            System.out.println("2");
        }
        if (list != null) {
            System.out.println("3");
        }
                if (list != null && list.size() > 0) {
                        System.out.println("4");
                }

输出:

1

3

第二种情况

add值到list中

        List<String> list =new ArrayList<>();
        list.add("da");
        if (list.isEmpty()) {
            System.out.println("1");
        }
        if (!list.isEmpty()) {
            System.out.println("2");
        }
        if (list == null) {
            System.out.println("3");
        }
                if (list != null && list.size() > 0) {
                        System.out.println("4");
                }

输出:

2

4

第三种情况

只创建list的引用,不实例化。

List<String> list = null;
        if (list.isEmpty()) {
            System.out.println("1");
        }
        if (!list.isEmpty()) {
            System.out.println("2");
        }
        if (list != null) {
            System.out.println("3");
        }
        if (list != null && list.size() > 0) {
            System.out.println("4");
        }

输出:

Exception in thread "main" java.lang.NullPointerException

改进办法:

使用org.apache.commons.collections.CollectionUtils;

CollectionUtils.isEmpty(Collecions<extend>);

可以避免

java.lang.NullPointerException异常

CollectionUtils.isEmpty和 == null的区别

本文所指的 CollectionUtils 所属包

org.apache.commons.collections

CollectionUtils.isEmpty() 包含null,size=0等多种情况

而== null 只能用来判断是否为null

举个例子

        if (CollectionUtils.isEmpty(orderDTO.getOrderDetailList())) {
            log.error("[创建订单]购物车不能为空,customerOrderForm = {}", customerOrderForm);
            throw new CustomerOrderControllerException(CustomerOrderControllerStateEnum.SHOPPING_CART_EMPTY);
        }
        OrderDTO orderDTOResult = orderService.createOrder(orderDTO);

此处if判断条件中,不仅可以判断获取的List是否为null,还能判断获取的List的size是否为0

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java中Collections.emptyList()的注意事项

    偶然发现有小伙伴错误地使用了Collections.emptyList()方法,这里记录一下.她的使用方式是: public void run() { ...... List list = buildList(param); ...... Object newNode = getNode(...); list.add(newNode); ...... } public List buildList(Object param) { if (isInValid(param)) { return Co

  • 详解JAVA中的Collection接口和其主要实现的类

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的"子接口"如List和Set,详细信息可见官方文档http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/

  • Java Collections的emptyList、EMPTY_LIST详解与使用说明

    目录 Collections的emptyList.EMPTY_LIST使用 Collections.emptyList()使用注意 Collections的emptyList.EMPTY_LIST使用 今天在看大佬写的代码的时候,结果集为空的情况,他返回的不是null,而是: return Collections.EMPTY_LIST; 我们都知道返回null,很有可能造成空指针异常,可以使用emptyList或EMPTY_LIST就可以避免这个问题,除非你想捕获这个为空的信息 我们在使用emp

  • java-collection中的null,isEmpty用法

    目录 collection中的null,isEmpty用法 第一种情况 第二种情况 第三种情况 CollectionUtils.isEmpty和==null的区别 本文所指的CollectionUtils所属包 举个例子 collection中的null,isEmpty用法 只使用java utils包的isEmpty. 第一种情况 实例化list,但是size为空.     List<String> list =new ArrayList<>();         if (lis

  • 浅谈java Collection中的排序问题

    这里讨论list.set.map的排序,包括按照map的value进行排序. 1)list排序 list排序可以直接采用Collections的sort方法,也可以使用Arrays的sort方法,归根结底Collections就是调用Arrays的sort方法. public static <T> void sort(List<T> list, Comparator<? super T> c) { Object[] a = list.toArray(); Arrays.

  • 浅析java 10中的var关键字用法

    2018年3月20日,Oracle发布java10.java10为java带来了很多新特性,其中让人眼前一亮的便是var关键字的引入. what •java10引入了局部变量折断 var用于声明局部变量. 如var user=new ArrayList<User>(); why •避免了信息冗余 •对齐了变量名 •更容易阅读 how •java10之前的变量声明: URL codefx = new URL("http://codefx.org") URLConnection

  • java程序中protobuf的基本用法示例

    目录 简介 为什么使用protobuf 定义.proto文件 编译协议文件 详解生成的文件 Builders 和 Messages 序列化和反序列化 协议扩展 总结 简介 Protocol Buffer是google出品的一种对象序列化的方式,它的体积小传输快,深得大家的喜爱.protobuf是一种平台无关和语言无关的协议,通过protobuf的定义文件,可以轻松的将其转换成多种语言的实现,非常方便. 今天将会给大家介绍一下,protobuf的基本使用和同java结合的具体案例. 为什么使用pr

  • Java编程中的vector类用法学习笔记

    java.util.vector提供了向量类(vector)以实现类似动态数组的功能.在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量.比如在c,c++中所谓的"动态数组"一般都由指针来实现.为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一.事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用. 创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先

  • 详解Java编程中super关键字的用法

    通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的. 好了,现在开始讨论this&super这两个关键字的意义和用法.在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当

  • shell脚本中 /dev/null 的用法小结

    /dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/null 在命令行和脚本中都非常有用 用途 /dev/null 通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成,任何你想丢弃的数据都可以写入其中 丢弃标准输出 在写shell脚本的时候,只想通过命令的结果执行后面的逻辑,而不想命令执行过程中有一大堆中间结果输出,这时候可以

  • Java Collection 移除元素方法及注意事项

    1. 前言 操作集合是一个 Java 编程人员几乎每天都在重复的事情.今天我们来研究一下从 Java Collection 中删除元素的方法.我构建了一个简单的集合,我们以此为例子来展开探索. List<String> servers = new ArrayList<>(); servers.add("Felordcn"); servers.add("Tomcat"); servers.add("Jetty"); serv

  • JAVA 中Spring的@Async用法总结

    JAVA 中Spring的@Async用法总结 引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后,就已经内置了@Async来完美解决这个问题,本文将完成介绍@Async的用法. 1.  何为异步调用? 在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的

  • JAVA中的final关键字用法实例详解

    本文实例讲述了JAVA中的final关键字用法.分享给大家供大家参考,具体如下: 根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是"这是无法改变的."不想改变的理由有两种:一种是效率,另一种是设计.由于两个原因相差很远,所以关键子final可能被误用. 接下来介绍一下使用到final的三中情况:数据,方法,类 final数据 许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的.有时数据的恒定不变是很有用的,例如: 1. 一个编译时恒定不变的常量 2.

随机推荐