iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java返回集合为null还是空集合及空集合的三种写法分别是什么
  • 116
分享到

java返回集合为null还是空集合及空集合的三种写法分别是什么

2023-06-25 14:06:04 116人浏览 薄情痞子
摘要

本篇文章为大家展示了java返回集合为null还是空集合及空集合的三种写法分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。返回集合为null还是空集合及空集合的三种写法个人认为在自己写接口时

本篇文章为大家展示了java返回集合为null还是空集合及空集合的三种写法分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

返回集合为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,否则新建一个对象。

返回空List的方式

方式一:new ArrayList()  

jdk1.8已经优化了,默认构造函数创建的list内部共享空数组,首次插入数据时才会扩容到默认容量;

private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};public ArrayList() {this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}

方式二:new ArrayList(0)

private static final Object[] EMPTY_ELEMENTDATA = {};public ArrayList(int initialCapacity) {if (initialCapacity > 0) {this.elementData = new Object[initialCapacity];} else if (initialCapacity == 0) {this.elementData = EMPTY_ELEMENTDATA;} else {throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity);}}

方式三:Collections.emptyList()(推荐)

特点:不可变,安全

@SuppressWarnings("rawtypes")public static final List EMPTY_LIST = new EmptyList<>();@SuppressWarnings("unchecked")public static final <T> List<T> emptyList() {return (List<T>) EMPTY_LIST;}private static class EmptyList<E>extends AbstractList<E>implements RandoMaccess, Serializable {private static final long serialVersionUID = 8842843931221139166L;public Iterator<E> iterator() {return emptyIterator();}public ListIterator<E> listIterator() {return emptyListIterator();}public int size() {return 0;}public boolean isEmpty() {return true;}public boolean contains(Object obj) {return false;}public boolean containsAll(Collection<?> c) { return c.isEmpty(); }public Object[] toArray() { return new Object[0]; }public <T> T[] toArray(T[] a) {if (a.length > 0)a[0] = null;return a;}public E get(int index) {throw new IndexOutOfBoundsException("Index: "+index);}public boolean equals(Object o) {return (o instanceof List) && ((List<?>)o).isEmpty();}public int hashCode() { return 1; }@Overridepublic boolean removeIf(Predicate<? super E> filter) {Objects.requireNonNull(filter);return false;}@Overridepublic void replaceAll(UnaryOperator<E> operator) {Objects.requireNonNull(operator);}@Overridepublic void sort(Comparator<? super E> c) {}// Override default methods in Collection@Overridepublic void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);}@Overridepublic Spliterator<E> spliterator() { return Spliterators.emptySpliterator(); }// Preserves singleton propertyprivate Object readResolve() {return EMPTY_LIST;}}

上述内容就是java返回集合为null还是空集合及空集合的三种写法分别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: java返回集合为null还是空集合及空集合的三种写法分别是什么

本文链接: https://www.lsjlt.com/news/305473.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java返回集合为null还是空集合及空集合的三种写法分别是什么
    本篇文章为大家展示了java返回集合为null还是空集合及空集合的三种写法分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。返回集合为null还是空集合及空集合的三种写法个人认为在自己写接口时...
    99+
    2023-06-25
  • java返回集合为null还是空集合及空集合的三种写法小结
    目录返回集合为null还是空集合及空集合的三种写法返回空List的方式方式一:new ArrayList()  方式二:new ArrayList(0)方式三:Colle...
    99+
    2024-04-02
  • Java中list集合为空或为null的区别是什么
    本篇内容介绍了“Java中list集合为空或为null的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!list集合为空或为null...
    99+
    2023-06-25
  • java判断集合是否为空的方法是什么
    在Java中,判断集合是否为空有几种方法可以使用: 使用集合的isEmpty()方法:该方法返回一个boolean值,表示集合是否...
    99+
    2024-03-06
    java
  • Java中list集合为空或为null的区别说明
    目录list集合为空或为null的区别发现原因解决方法我记录如下要点判断List集合为空或nulllist集合为空或为null的区别 javaWeb项目,调用第三方系统获取第三方数据...
    99+
    2024-04-02
  • 判断List、Map集合是否为空的方法
    在Java中,判断集合是否为空有几种方法。以下是其中的一些: 1.使用List.isEmpty()方法。例如:  List list = new ArrayList();if (list.isEmpty()) { System.out...
    99+
    2023-09-09
    java jvm servlet
  • java两个对象集合取差集的方法是什么
    在Java中,可以使用以下几种方式来取两个对象集合的差集:1. 使用循环遍历方式:遍历第一个集合,检查每个元素是否存在于第二个集合中...
    99+
    2023-08-25
    java
  • java中集合和数组的区别是什么
    本篇文章为大家展示了java中集合和数组的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开...
    99+
    2023-06-14
  • java集合流过滤的方法是什么
    Java集合流过滤的方法是使用filter()方法。filter()方法接受一个Predicate参数,用于筛选集合中满足条件的元素...
    99+
    2023-09-11
    java
  • java中怎么使用CollectionUtils工具类判断集合是否为空
    本篇内容介绍了“java中怎么使用CollectionUtils工具类判断集合是否为空”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用Co...
    99+
    2023-06-29
  • java中set集合遍历的方法是什么
    在Java中,Set集合可以通过迭代器(Iterator)或者增强for循环(foreach)来进行遍历。 使用迭代器遍历Set集合...
    99+
    2024-03-04
    java
  • Java中Hashtable集合的常用方法是什么
    本篇内容介绍了“Java中Hashtable集合的常用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!public Object&n...
    99+
    2023-06-25
  • Python中关于集合的介绍及用法是什么
    这期内容当中小编将会给大家带来有关Python中关于集合的介绍及用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  一、集合的含义及创建方法  集合(s...
    99+
    2024-04-02
  • Python划分数组为连续数字集合的方法是什么
    本篇内容介绍了“Python划分数组为连续数字集合的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、问题描述给你一个整数数组 n...
    99+
    2023-06-25
  • Mybatis查找返回Map,List集合类型的数据方式是什么
    这篇文章主要介绍“Mybatis查找返回Map,List集合类型的数据方式是什么”,在日常操作中,相信很多人在Mybatis查找返回Map,List集合类型的数据方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-20
  • Python字典中集合类型的六种操作方案分别是什么
    Python字典中集合类型的六种操作方案分别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。集合类型①用集合的工厂方法 set()和 frozenset()...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作