【问题标题】:How to check if an element in array exists in Java如何检查数组中的元素是否存在于Java中
【发布时间】:2009-03-07 22:31:16
【问题描述】:

如果我有一个像这样结构的int 数组:

private int[][] map = new int[400][400];

我试着找回

map[100][200]

并且该元素未初始化,我会收到编译器/运行时错误还是会返回 null?是否有任何功能可以检查给定元素/索引是否存在/已设置?

【问题讨论】:

  • 这个问题的标题可以编辑得更清楚
  • 请改一下tym的title.wastage.....

标签: java arrays initialization


【解决方案1】:

由于您的数组声明是原始类型,您不会收到任何编译器或运行时错误 - 将返回默认值 0。

如果您的数组是一个对象数组,那么该数组将保存null 用于未专门分配的任何元素。

【讨论】:

    【解决方案2】:

    我不会返回null,因为int 是原始类型。它将返回默认的int 值,即0

    没有办法知道是否设置了任何元素,除非保留一个单独的布尔数组。

    【讨论】:

    • 如果它是一个自定义类/枚举对象的数组,如果没有设置该项目/索引,它会返回 null 吗?
    【解决方案3】:

    在 Java 中,只有引用变量被初始化为 null。保证原语返回appropriate default values。对于整数,此值为 0。

    【讨论】:

      【解决方案4】:

      没有。

      在这种情况下,您的数组元素仅足以容纳ints。没有地方可以存储有关元素是否“存在”的信息。它已被分配,因此它存在。在 Java 中,新分配的 int 数组将被初始化为所有元素为零。

      【讨论】:

        【解决方案5】:

        您可以在您的源代码上使用checkstylepmdfindbugs(在二进制文件上查找错误),它们会告诉您这样的事情。

        不幸的是,他们似乎没有发现这个特殊问题(这是有道理的,保证数组的每个成员都设置为 0、null 或 false)。

        使用这些工具可以捕获在被赋予值之前正在使用的实例和类成员(不是数组)(类似的问题)。

        【讨论】:

          【解决方案6】:

          有点死气沉沉的话题,但我偶然发现了它,所以我要把我的智慧(或其他任何东西:P)。您可以使用 Arrays.Fill 在使用无效值(如 -1)创建数组时填充数组。然后您可以轻松地执行 if x

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-04-22
            • 2021-10-26
            • 1970-01-01
            • 1970-01-01
            • 2013-10-31
            • 2015-07-31
            • 2021-11-12
            • 1970-01-01
            相关资源
            最近更新 更多