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)

大家都在看

  • crudapi增删改查接口零代码产品成功案例之商会联盟卡项目

    crudapi增删改查接口零代码产品成功案例之商会联盟卡项目 简介 商会联盟卡项目主要通过免费领取会员卡的方式吸引会员去合作商家线下消费,通过会员卡买单可以享受打折福利,最终顾客得…

    Java 2023年6月6日
    0120
  • Java socket 多线程编程 示例

    参照网上代码: 1.工程: 2.代码: Client.java package com.my.socket.test; import java.io.BufferedReader;…

    Java 2023年5月29日
    079
  • RabbitMQ 远程 IP 访问 解决办法 -摘自网络

    java.io.IOExceptionat com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:10…

    Java 2023年5月30日
    076
  • 正确输出Hello world!

    _ Hello world , 随便新建一个文件夹,存放代码 新建一个java文件 文件后缀名为.java Hello.java 系统可能没有显示文件后缀名,需手动打开 手动打开需…

    Java 2023年6月5日
    080
  • 再也不担心构建问题了

    希望这篇文章可以理清这个工具,了解其使用。 前言 说真的,autotools工具让我很头疼,各种类似的工具 autolocal , automake 以及生产各种相似的文件 Mak…

    Java 2023年5月30日
    067
  • 为什么会有996

    从发展阶段来看,国内的互联网公司大多都处于 原始积累阶段,大家都是 你有什么&#x5…

    Java 2023年6月15日
    070
  • InnoDB学习(八)之 聚簇索引

    InnoDB中,表数据文件本身就是以主键为索引的B+树,树的叶子节点存放一条条表数据,此索引树被称为表的聚簇索引。聚簇索引也称为聚集索引,聚类索引,簇集索引,聚簇索引确定表中数据的…

    Java 2023年6月8日
    0107
  • java 程序运行的基础知识【Java bytecode】

    每一个JVM线程来说启动的时候都会创建一个私有的线程栈。一个jvm线程栈用来存储栈帧,jvm线程栈和C语言中的栈很类似,它负责管理局部变量、部分运算结果,同时也参与到函数调用和函数…

    Java 2023年6月15日
    063
  • Spring Boot 入门(六)使用MySQL

    用MySQL客户端,新建测试数据库 客户端:MySQL Workbench 根pom添加依赖 org.springframework.boot spring-boot-starte…

    Java 2023年6月5日
    089
  • Android 使用 ContentProvider 简单操作数据库

    ContentProvider 可以用来原生读写 Android 自带的数据库 SQLite。 使用 Studio 创建一个 ContentProvider, 名字叫 TestCo…

    Java 2023年6月7日
    071
  • 关于计算两日期之间经过多少天的超巧妙算法

    首先声明:本文引自一博主原创博客 昨天呢,刚刚阅读了这个代码,大部分都还可以看懂,有一两个地方属实难懂,但细细思来,方知博主此代码超神奇。简直巧妙至极。 所以来细细解析一下此代码。…

    Java 2023年6月5日
    084
  • Java远程调用原理DEMO

    POJO Service接口定义 Provider服务实现 Provider Consumer Original: https://www.cnblogs.com/zhangfei…

    Java 2023年5月29日
    077
  • Filter 过滤器

    什么是Filter过滤器? 1、Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器2、F…

    Java 2023年6月15日
    092
  • Maven 依赖调解源码解析(一):开篇

    相信久经沙场的 Java 开发同学们,一定对 Maven 这个工具不陌生。Maven 的依赖调解原则,便是经常聊到的话题。它是为了解决 groupId 和 artifactId 完…

    Java 2023年6月16日
    070
  • SpringBoot 解决跨站脚本漏洞(XSS)问题

    SpringBoot 解决跨站脚本漏洞(XSS)问题 解决方案 步骤如下: 1、添加maven依赖 在 pom.xml文件中,增加如下依赖: <dependency> …

    Java 2023年5月30日
    090
  • kotlin 圆形进度条

    kotlin版的自定义圆形进度条 大多数启动页都会带个进度条加载样式,所以就自己用kotlin重新写了一个,如果真的要很炫酷还是有很多东西可以附加的 一个简单的进度条基本组成就是一…

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