此代码从一组不同类类型的对象引用中删除具有特定名称的某个类的对象。它找到具有特定类名的对象,然后使用参数中对象的name字段查找该类中的对象,然后删除该对象。如果删除了对象,则返回true;如果找不到该对象,则返回false。
当它删除对象时,在尝试打印出数组中的所有对象时,我得到一个空指针异常。我认为这是因为它指向被移除的对象所在的位置,并且没有任何内容。我不确定如何解决此错误。有帮助吗?我需要将数据复制到新数组中吗?
这是代码。 theList是对象引用的数组。
public boolean removeAnObject(Element anObject)
{
String paramClass = anObject.getClassName();
String currClass;
for (int i = 0; i < currentSize; i++)
{
currClass = theList[i].getClassName();
if (currClass.equals(paramClass))
{
if (theList[i].equals(anObject))
{
theList[i] = null;
return true;
}
}
}
// This object was not found in the set
return false;
}
答案 0 :(得分:1)
打印出数组的元素时,首先检查每个索引处的元素是否为continue
。如果是这样,那么只需 public boolean removeAnObject(Element anObject)
{
String paramClass = anObject.getClassName();
String currClass;
for (int i = 0; i < currentSize; i++)
{
currClass = theList[i].getClassName();
if (currClass.equals(paramClass))
{
if (theList[i].equals(anObject))
{
for (int j = i; j < currentSize-1; j++) {
theList[j] = theList[j+1];
}
currentSize--;
return true;
}
}
}
// This object was not found in the set
return false;
}
。
另一种方法是移动数组的元素:
final
答案 1 :(得分:0)
而不是将其设置为null,如何删除它?
theList = ArrayUtils.removeElement(theList, i);