java - 检查数组是否为空,但不为空

标签 java arrays

我有一个对象数组(Object[] 数组),我想检查它是否为空,但如果它为 null 并出现 NPE 或任何其他异常,则快速失败。

我知道我可以做以下检查

array.length == 0

但是例如对于 String 或集合,不推荐这样做,IntelliJ 甚至对此进行了检查:

Reports any .size() or .length() comparisons with a 0 literal which can be replaced with a call to .isEmpty().

数组的 .isEmpty() 是否有任何替代品?

ArrayUtils.html#isEmpty(java.lang.Object[]) ,但它也会检查 null,而我想避免这种情况。

最佳答案

因为.size()是方法,它的实现是隐藏的。而且您不能确定此方法是否已优化(有可能,例如,某些集合在您每次调用 .size() 方法时都会枚举项目)。这就是为什么计算集合的 .size() 可能 是昂贵的。同时,.isEmpty()可以检查集合中是否至少有一项,并返回结果。

但是 .length 只是一个字段。它什么都不做,只是返回一个值。没有计算。该字段只存储固定大小的数组的长度。

我相信 .size().length 是完全不同的东西,在这种情况下,它们无法进行比较,集合和数组也是如此。

关于java - 检查数组是否为空,但不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433148/

相关文章:

PHP - 与 "Undefined offset"错误不一致

java - Java Web 服务中 Vector 的 vector

java - Mac 上的 java 安装 (xerces) 问题

javascript - ES6 中的扩展运算符在旧版 JavaScript 中转换成什么?它比 array.concat 更 coSTLier 吗?

javascript - for 循环中的键/值对出现问题 : Cannot read property 'achievement' of undefined\n

Javascript |奇数数组行为 - 解析组合数组与预定义数组

java - Spring 4 java配置,前后端分离,为localhost :port/myAppsName/设置主页

java - 同时拉入多个文件

java - 如何使用Java将字符串逐字符转换为浮点型?

java - String.split 数组到另一个二维字符串数组