Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在迭代之前调用isEmpty()是否多余?_Java - Fatal编程技术网

Java 在迭代之前调用isEmpty()是否多余?

Java 在迭代之前调用isEmpty()是否多余?,java,Java,给定集合foo,我通常在迭代它之前进行此检查: if (foo != null && !foo.isEmpty()) { for (Object f : foo) { // ... } } 我只是想知道,这被认为是最佳实践吗?isEmpty()检查是否应该是多余的,因为for()只会忽略一个空集合而不会抛出错误 检查null是否必要,或者是否有办法使for()忽略null集合?(无需尝试捕捉for循环)关于

给定
集合foo
,我通常在迭代它之前进行此检查:

    if (foo != null && !foo.isEmpty()) {
        for (Object f : foo) {
            // ...
        }
    }
我只是想知道,这被认为是最佳实践吗?
isEmpty()
检查是否应该是多余的,因为
for()
只会忽略一个空集合而不会抛出错误


检查
null
是否必要,或者是否有办法使
for()
忽略
null
集合?(无需尝试捕捉for循环)

关于对
的调用,isEmpty
我可以向您保证这是多余的。您甚至可能希望检查Joshua的有效Java 2nd,并重新查看从for each循环转换而来的代码。

关于调用isEmpty,我可以向您保证这是多余的。您甚至可能想检查Joshua有效的Java2nd,并重新查看从for-each循环转换而来的代码

isEmpty()检查是否应该是多余的,因为for()只会忽略一个空集合而不会抛出错误

它是多余的,在空集合上使用增强的
for
是完全无害的。请注意,这样做确实会创建一个迭代器对象,因此该检查可能会提供一些非常较小的内存波动保护,但通常如果值得的话,您会有更大的问题需要解决

空检查是必要的还是有办法使for()忽略空集合?(不尝试捕捉for循环)

您需要进行
null
检查,除非您要捕获NPE(您说您不想这样做),或者您要允许该NPE传播到调用方(例如,因为
foo
在逻辑上不应该是
null
,或者类似)

isEmpty()检查是否应该是多余的,因为for()只会忽略一个空集合而不会抛出错误

它是多余的,在空集合上使用增强的
for
是完全无害的。请注意,这样做确实会创建一个迭代器对象,因此该检查可能会提供一些非常较小的内存波动保护,但通常如果值得的话,您会有更大的问题需要解决

空检查是必要的还是有办法使for()忽略空集合?(不尝试捕捉for循环)

您需要进行
null
检查,除非您要捕获NPE(您说您不想这样做),或者您要允许该NPE传播到调用方(例如,因为
foo
在该点上在逻辑上不应为
null
,或者类似)。

是的,是的

只有福!=如果在代码的该点可以为null,则可能需要null。

是的,它是


只有福!=如果在代码的那个点上可以为null,则可能需要null。

我最近遇到的最佳实践之一是使用CollectionUtils

if (org.apache.commons.collections.CollectionUtils.isNotEmpty(collectionName)) {
//Iterate through collectionName
}
ApacheCommons的CollectionUtils.isNotEmpty(Collection)是一个空安全检查

如果集合/列表不为空,则返回TRUE;如果集合为null,则NOTNULL返回FALSE

以以下为例:

List<String> properties = new ArrayList();
if (CollectionUtils.isNotEmpty(properties)) {
  // process the list
} else {
 // list is null or empty
}
List properties=new ArrayList();
if(CollectionUtils.isNotEmpty(属性)){
//处理列表
}否则{
//列表为null或空
}

jar required:commons.collections.xxx.jar

我最近遇到的最佳实践之一是使用CollectionUtils

if (org.apache.commons.collections.CollectionUtils.isNotEmpty(collectionName)) {
//Iterate through collectionName
}
ApacheCommons的CollectionUtils.isNotEmpty(Collection)是一个空安全检查

如果集合/列表不为空,则返回TRUE;如果集合为null,则NOTNULL返回FALSE

以以下为例:

List<String> properties = new ArrayList();
if (CollectionUtils.isNotEmpty(properties)) {
  // process the list
} else {
 // list is null or empty
}
List properties=new ArrayList();
if(CollectionUtils.isNotEmpty(属性)){
//处理列表
}否则{
//列表为null或空
}
需要jar:commons.collections.xxx.jar

  • 检查是否存在空集合

    不,这不是多余的。你必须这样做以避免NPE

  • 检查是否有空集合

    是的,这是多余的。没必要这么做

  • 检查是否存在空集合

    不,这不是多余的。你必须这样做以避免NPE

  • 检查是否有空集合

    是的,这是多余的。没必要这么做


  • 在.isEmpty条件下,我看不出有任何用处,它只是给代码添加了噪音,使代码的实际功能更难阅读和识别

    空检查是必要的还是有办法使for()忽略空集合?(不尝试捕捉for循环)


    对于每个循环,您应该在执行之前始终检查null。这是您应该考虑的唯一解决方案,因为捕获NPE(通常是运行时异常)是。运行时异常表示在设计时没有预料到的情况,这通常意味着编程错误。所以缓存这些异常可以隐藏代码中真正的bug。例如,如果使用try catching NullPointerException围绕For each,您如何知道异常是因为集合为null而不是因为循环中的代码而发生的。

    我看不到.isEmpty条件有任何用处,它只是给代码增加了噪音,使代码的实际功能更难阅读和识别

    visibleTiles.isEmpty()
    
    空检查是必要的还是有办法使for()忽略空集合?(不尝试捕捉for循环)

    对于每个循环,您应该在执行之前始终检查null。这是您应该考虑的唯一解决方案,因为捕获NPE(通常是运行时异常)是。运行时异常表示在设计时没有预料到的情况,这通常意味着编程错误。所以缓存这些异常可以隐藏代码中真正的bug。因为我