Java ArrayList removeAll()返回false。还有别的选择吗?

Java ArrayList removeAll()返回false。还有别的选择吗?,java,android,Java,Android,我有两个ArrayList,我想删除第一个ArrayList的所有对象,并参考第二个ArrayList。我知道我可以使用removeAll()方法,但它返回false。两个ArrayList的类型相同。removeAll()的任何替代方案 @覆盖 受保护的void onPostExecute(void避免){ super.onPostExecute(避免); 如果(成功签署){ ArrayList dataList=adapter.getDataSet(); 布尔删除=dataList.remo

我有两个ArrayList,我想删除第一个ArrayList的所有对象,并参考第二个ArrayList。我知道我可以使用removeAll()方法,但它返回false。两个ArrayList的类型相同。removeAll()的任何替代方案

@覆盖
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
如果(成功签署){
ArrayList dataList=adapter.getDataSet();
布尔删除=dataList.removeAll(taskDataList);
日志d(“日志标签”、“删除?”+删除);
setPreference(getPrefName(),dataList);
}
}
公共ArrayList getDataSet(){
返回数据集;
}
私有类AssignTask扩展了AsyncTask{
进行对话进行对话;
ArrayList任务数据列表;
布尔成功地被签名;
@安全变量
@凌驾
受保护的最终无效doInBackground(ArrayList…callData){
taskDataList=callData[0];

发生这种情况有三个原因

  • 其中一个列表为空
  • 这些列表没有公共元素
  • 您没有实现
    CustomDataModel.equals()

  • 它是否会返回
    false
    ,因为它一开始是空的?
    removeAll
    返回false是因为
    dataList
    taskDataList
    没有共同的元素。正如@JoeC所说,一个很好的选择是其中至少有一个是空的。我正在寻找它,是的,我意识到我没有覆盖它。equals()在我的POJO课上…谢谢你的回复
        @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];