【问题标题】:Java check if array[] item existsJava检查数组[]项是否存在
【发布时间】:2012-10-05 13:04:04
【问题描述】:

我正在将一些数据下载到一个字符串数组中。假设ImageLinks。 如何检查数组中的项目是否存在?

我在努力

if(ImageLinks[5] != null){}

但它给了我ArrayIndexOutOfBoundsException。 (因为数组中真的没有5个链接)

【问题讨论】:

  • if (ImageLinks.length > 5) ??

标签: java arrays


【解决方案1】:

要防止ArrayIndexOutOfBoundsException,您可以使用以下内容:

if(ImageLinks.length > 5 && ImageLinks[5] != null)
{
    // do something
}

由于if 中的语句是从左到右检查的,因此如果数组的大小不正确,您将无法进行空检查。

很容易概括任何场景。

【讨论】:

  • 设置索引的数组怎么样?就像a[0] = 20; a[5] = 30; 一样。如果我检查if(a.length > 4 && a[4] != null),它会抛出一个空异常,不是吗?
  • @sdlins 为了能够设置索引 5,数组的长度必须至少为 6,然后才能执行 if 语句。那时它将检查索引是否存在以及它是否为空。不会有任何例外。
  • 是的!对不起,你是对的!我通过代码尝试了它,它工作正常。我可能混合了不同的语言概念。谢谢!
【解决方案2】:

写一个静态函数

public static boolean indexInBound(String[] data, int index){
    return data != null && index >= 0 && index < data.length;
}

现在,在你的代码中调用它

if(indexInBound(ImageLinks, 5) && ImageLinks[5] != null){
   //Your Code
}

【讨论】:

  • 这不会处理null 的情况。
  • @Baz 这是解决 ArrayIndexOutOfBoundsException,如果我们想处理 Null 条件,我们可以随时为 NullPointerException 添加一个 catch 块
  • 只是说OP想要同时实现。
  • 也对,代码中没有任何语句抛出NPE。
  • 我在这个答案中遇到了一些问题... 1) exceptional 行为应该使用异常;使用异常来处理预期行为,例如在truefalse 检查中,是非常不好。 2) is...Exists 命名不好。
【解决方案3】:

在进行查找之前确保数组具有该长度

if(ImageLinks.length > 5 && ImageLinks[5] != null){}

【讨论】:

    【解决方案4】:

    它失败的原因是数组的元素少于 6 个。

    先检查数组的元素个数是否正确,再检查该元素是否存在于数组中。

     if (ImageLinks.length > 5 && ImageLinks[5] != null) {
         // do something
     }
    

    【讨论】:

    • 您的答案不正确。请参阅以下 Java 文档页面上的“短路”逻辑:docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
    • 如果第一个布尔语句为假且其后有 && 运算符,则没有理由继续评估,因为此时整个语句必须为假,无论第二个操作数是否为真假
    • 更正了答案
    【解决方案5】:

    是的,元素少于 6 个 ImageLinks[5] 引用第 6 个元素作为 java 中的数组索引从 0 开始

    【讨论】:

      【解决方案6】:
      if (ImageLinks != null && Stream.of(ImageLinks).anyMatch(imageLink-> imageLink != null)) {
      //An item in array exist
      }
      

      【讨论】:

        猜你喜欢
        • 2017-12-29
        • 2011-06-20
        • 2012-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 2019-01-06
        相关资源
        最近更新 更多