2015-10-27 96 views
1

此代碼從具有不同類類型的對象引用集中移除具有某個特定名稱的某個類的對象。它查找具有某個類名稱的對象,然後查找該類中的對象與參數中對象的名稱字段,然後刪除該對象。如果對象被刪除,它返回true;如果找不到對象,則返回false。從元素集中移除對象

當它刪除對象時,當試圖打印出數組中的所有對象時,我得到一個空指針異常。我認爲這是因爲它指向了被刪除的對象的位置,並且沒有任何東西。我不確定如何解決這個錯誤。任何幫助?我需要將數據複製到新陣列中嗎?

這是代碼。該列表是對象引用的數組。

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; 
    } 
+1

哪裏currentSize從何而來? –

回答

1

當打印出數組,首先檢查的元件如果每個索引處的元素是null。如果是這樣,那麼只需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; 
    } 
0

而不是將其設置爲null,如何刪除它?

theList = ArrayUtils.removeElement(theList, i);