2017-09-16 154 views
-1

我有兩個ArrayLists,我想刪除第一個ArrayList的所有對象,並引用第二個ArrayList。我知道我可以使用removeAll()方法,但它返回false.Both ArrayLists是相同的類型。的removeAll()的任何替代ArrayList removeAll()返回false。任何替代品?

@Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     if (successfullyAssigned) { 
      ArrayList<CustomDataModel> dataList = adapter.getDataSet(); 
      Boolean deleted = dataList.removeAll(taskDataList); 
      Log.d("LogTag", "deleted ? " + deleted); 

      setPreference(getPrefName(), dataList); 
     } 
    } 

public ArrayList<CustomDataModel> getDataSet() { 
    return dataSet; 
} 

private class AssignTask extends AsyncTask<ArrayList<CustomDataModel>, Void, Void> { 
    ProgressDialog progressDialog; 
    ArrayList<CustomDataModel> taskDataList; 
    Boolean successfullyAssigned; 


    @SafeVarargs 
    @Override 
    protected final Void doInBackground(ArrayList<CustomDataModel>... callData) { 
     taskDataList = callData[0]; 
+0

它是否會返回'false',因爲它是空的開始? –

+0

'removeAll'返回false,因爲'dataList'和'taskDataList'不包含共同的元素。正如@JoeC所說,一個很好的選擇是,其中至少有一個是空的 –

回答

1

有三個原因會發生這種情況

  1. 其中一個列表是空的。
  2. 該列表沒有共同元素。
  3. 您沒有執行CustomDataModel.equals()
+0

我一直在尋找它,是的,我意識到我沒有重寫。等於()在我的POJO類...感謝您的回覆 –

+0

@KalpeshKundanani不客氣 –