zoukankan      html  css  js  c++  java
  • java返回集合为null还是空集合

    个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null。

    那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为null,可以直接用,因为不用抛空指针。

    当然这也有缺点,如果返回Lists.newArrayList();或者new ArrayList();这会新建一个对象,而这个对象很可能是没必要的,这样白白浪费性能。

    解决方法当然也有,可以用Collections.emptyList();这个方法返回一个空集合,并不会新建对象,而是返回

    public static final List EMPTY_LIST = new EmptyList<>(); 

    这个变量。

    当然这也有缺点,如果调用方只是遍历,这没什么不会报错,但是如果要新增,删除里面的元素那就会报错,

    那么你可能想为什么,原因就是代码里直接写死了调用时报错,那么为什么要这样写呢?

    原因也很简单,如果多个线程对这个集合增删,那么调用方就全乱了,所以采用了直接报错,快速失败的方法

    来解决问题。

    总结:

    返回null,返回new ArrayList<>(),返回EMPTY_LIST 。

    null肯定是不推荐的,那么是新建一个List还是返回空List呢?

    这要根据接口的性能要求,如果性能要求高返回EMPTY_LIST,否则新建一个对象。

  • 相关阅读:
    【POJ3069】Saruman's Army
    【POJ2453】An Easy Problem
    【POJ2386】Lake Counting
    【POJ2251】Dungeon Master
    【POJ1664】放苹果
    【基础】枚举学习笔记
    算法时空复杂度【OI缩水版】
    【POJ2018】Best Cow Fences
    【POJ3889】Fractal Streets(分形图)
    【BZOJ2296】随机种子(构造)
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/10146852.html
Copyright © 2011-2022 走看看