检查Java中是否已经存在数组项

检查Java中是否已经存在数组项,java,arrays,dynamic-programming,Java,Arrays,Dynamic Programming,我有一个相当简单的问题:如何检查(int)数组,当前条目数组[I]是否已分配 这是一个动态编程任务,我将子任务的结果存储在一个数组中。因此,阵列是连续填充的 我试过:if(a[I]!=null)做一些事情但我得到一个错误,在这种情况下“!=”是一个错误的运算符 检查此问题的最佳(稳健)解决方案是什么?如果a是int数组,您不能问: if (a[i] != null) 因为int值不能为null。在空的int数组中,未初始化的位置将0作为值。也许这将适用于您的用例 if (a[i] != 0)

我有一个相当简单的问题:如何检查(int)数组,当前条目数组[I]是否已分配

这是一个动态编程任务,我将子任务的结果存储在一个数组中。因此,阵列是连续填充的

我试过:
if(a[I]!=null)做一些事情但我得到一个错误,在这种情况下“!=”是一个错误的运算符


检查此问题的最佳(稳健)解决方案是什么?

如果
a
int
数组,您不能问:

if (a[i] != null)
因为
int
值不能为
null
。在空的
int
数组中,未初始化的位置将
0
作为值。也许这将适用于您的用例

if (a[i] != 0)

如果这不能解决问题,那么考虑在程序开始时显式初始化具有不同值的数组(例如:<代码> -1代码/代码>),并在条件下对其进行测试。

(A[i]!= NULL)是int类型的错误。这是因为int是一种基本类型,不能为null。正如在另一个答案和一些注释中所解释的,您可以使用一个设置值(如-1或Integer.MIN_值)填充数组,该值将标记一个未使用的元素

如果您需要一个可以为null并作为对象传递的值,也许整数数组就可以了

它的初始化几乎相同:

Integer[] a = new Integer[N];  // N is a constant indicating the length of the array
这将创建一个可以容纳整数对象的数组,所有整数对象都初始化为null。可以使用以下命令将整数放入数组:

a[i] = new Integer(x);
这在您的if语句中可以很好地工作:

if (a[i] != null) {...do something...}

很好。

这很难理解,你能分享一个例子吗?基本数组不能包含
null
,因此
int[]
元素的默认值是
0
。您无法知道是否已分配元素
0
,或者是否尚未分配任何内容。在动态编程的某些情况下,您可能需要指定标记值,例如
Integer.MIN\u value
来标记“未初始化”元素,尤其是在进行比较时。
int
是Java中的一种基本数据类型。因此它不能为空。因此
!=null
int
没有意义。不要使用
整数
构造函数(它是空的)。使用
valueOf
方法利用
Integer
缓存。如果使用
Integer
而不是
int
,并且仅允许数组中的
null
,将导致性能损失。选择一个
int
标记未初始化值IMHO更有意义。性能损失相当小,至少我已经读过了。它们是高度优化的。作为一个对象还有其他好处。首先,它们可以保存在标准集合类中。