Java ArrayList removeAll()返回false。还有别的选择吗?
我有两个ArrayList,我想删除第一个ArrayList的所有对象,并参考第二个ArrayList。我知道我可以使用removeAll()方法,但它返回false。两个ArrayList的类型相同。removeAll()的任何替代方案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
@覆盖
受保护的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];