java如何效率较高的判断list为空

判空 时间复杂度 可读性

我们都知道判断list为空可以通过两种途径:

一、

1 List list = new ArrayList(2);
2 System.out.println(list.size());//当list.size()==0时,说明该list为空
二、
1 List list = new ArrayList(2);
2 System.out.println(list.isEmpty());//当list.isEmpty为true时,说明该list为空
这样的文章在网上一搜一大堆,并且明确指出两种方式完全一样,真的是这样的吗?  在使用sonar进行代码扫描后,sonar给出这样的说法:
Using Collection.size() to test for emptiness works, but using Collection.isEmpty() makes the code more readable and can be more performant. The time complexity of any isEmpty() method implementation should be O(1) whereas some implementations of size() can be O(n).

可以概括为两点:  第一:从代码的可读性来说,isEmpty()方法的使用使得代码更具可读性;  第二:从时间复杂度来说,在任何时候isEmpty()方法实现的时间复杂度应为O(1),而size()的某些实现则可以为O(n)。我们往往会忽略这些小的细节,然而,为了让我们的代码更加的强壮,写出更优的代码就是我们不断追求的动力。共勉!!!

Original: https://www.cnblogs.com/ladyM/p/14048410.html
Author: GirlsBoy
Title: java如何效率较高的判断list为空

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607954/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java中 List、Set、Map 之间的区别

    一、List(列表) List的元素以线性方式存储,可以存放重复对象,List主要有以下两个实现类: ArrayList : 长度可变的数组,可以对元素进行随机的访问,向Array…

    Java 2023年5月29日
    074
  • 我怀疑这是IDEA的BUG,但是我翻遍全网没找到证据!

    你好呀,我是歪歪。 前几天有朋友给我发来这样的一个截图: 他说他不理解,为什么这样不报错。 我说我也不理解,把一个 boolean 类型赋值给 int 类型,怎么会不报错呢,并接着…

    Java 2023年6月5日
    070
  • Docker简介及安装

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化…

    Java 2023年6月8日
    063
  • mongodb添加延时节点

    简介 延时节点是主节点过去某个时间点的”数据快照”,通常用来做数据备份,如果主节点有误操作而删除了数据,可以通过延时节点来恢复数据。例如,当前时间是10:0…

    Java 2023年6月6日
    057
  • Spring常用注解

    Spring部分 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Con…

    Java 2023年6月5日
    067
  • 设计模式之命令模式

    本文通过解决老王经常搞错借书人的问题,来引出行为型模式中的命令模式。为了在案例之上理解的更加透彻,我们需要了解命令模式在源码中的应用。最后指出命令模式的应用场景和优缺点。 一、引出…

    Java 2023年6月8日
    068
  • 02、Java的lambda表达式和JavaScript的箭头函数

    前言 在JDK8和ES6的语言发展中,在Java的lambda表达式和JavaScript的箭头函数这两者有着千丝万缕的联系;本次试图通过这篇文章弄懂上面的两个”语法糖…

    Java 2023年6月13日
    096
  • rabbitmq报错:not_a_dets_file,”/var/lib/rabbitmq/mnesia/rabbit@Sfabrici-Demo01/recovery.dets”的解决办法

    1,故障现象,rabbitmq无法启动,报错截图如下: 2,解决办法:删除掉这个文件 (base) root@Sfabrici-Demo01:/usr/lib/rabbitmq/b…

    Java 2023年5月30日
    075
  • 动态代理大揭秘,带你彻底弄清楚动态代理!

    前言 代理模式是一种设计模式,能够使得在不修改源目标的前提下,额外扩展源目标的功能。即通过访问源目标的代理类,再由代理类去访问源目标。这样一来,要扩展功能,就无需修改源目标的代码了…

    Java 2023年6月8日
    098
  • fastposter发布1.4.5 跨语言的海报生成器

    fastposter发布1.4.5 跨语言的海报生成器 v1.4.5 增加了右键菜单,修复了跨域bug 一分钟完成海报开发任务 future: 增加了右键菜单 删除 图层上移 图层…

    Java 2023年6月5日
    0103
  • Android自定义控件1

    概述 Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了。自定义控件对于初学者总是感觉是一种复杂的技术。因为…

    Java 2023年6月13日
    082
  • 搬砖_BeanUtils的扩展

    简单描述一下: org.apache.commons.beanutils.BeanUtils只能对单个对象进行复制,如果对列表的话,就得自己遍历,所以扩展一下 import org…

    Java 2023年6月7日
    074
  • nginx代理socket笔记

    修改 nginx.conf 文件 event{ … } stream{ upstream abc { server 127.0.0.1:3000; } server { lis…

    Java 2023年5月30日
    056
  • Docker 核心知识回顾

    Docker 核心知识回顾 最近公司为了提高项目治理能力、提升开发效率,将之前的CICD项目扩展成 devops进行项目管理。开发人员需要对自己的负责的项目进行流水线的部署,包括写…

    Java 2023年6月7日
    088
  • JAVA 创建也项目平级文件

    undefined String url = System.getProperty("user.dir") +"/logs/test.txt&quot…

    Java 2023年5月29日
    083
  • Mybatis快速上手

    Mybatis开发步骤 <dependency> <groupid>mysql</groupid> <artifactid>mysq…

    Java 2023年6月5日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球