Java 根据条件从arraylist中删除元素

Java 根据条件从arraylist中删除元素,java,arraylist,Java,Arraylist,我有一个ArrayList,它的每个元素都是DataType类型,其中DataType是一个类: class DataType{ String dId; String dType; String rId; } 我需要从列表中删除rId等于任何其他元素dID的所有此类元素。 i、 e.如果数据类型D1的值为dID作为abc,数据类型D2的值为rID作为abc,则从列表中删除D1和D2 有人能推荐最合适的方法吗。最简单的方法是遍历列表一次并创建一个HashMap。 您将把每个对象映射到它们的

我有一个ArrayList,它的每个元素都是DataType类型,其中DataType是一个类:

class DataType{
 String dId;
 String dType;
 String rId;
}
我需要从列表中删除rId等于任何其他元素dID的所有此类元素。 i、 e.如果数据类型D1的值为dID作为abc,数据类型D2的值为rID作为abc,则从列表中删除D1和D2


有人能推荐最合适的方法吗。

最简单的方法是遍历列表一次并创建一个HashMap。 您将把每个对象映射到它们的dID,dID构成主键

之后,您可以迭代ArrayList,检查当前对象的rId并查看它是否在HashMap中。HashMap有O1查找时间,所以这应该不是问题。如果该值存在,请删除您正在使用迭代器防止ConcurrentModificationException的当前值,并删除键值对的值部分中的对象


确保正确实现了.equalsObject o和.hashcode。

不,您尝试了一些东西,并告诉我们您的尝试是否有效以及为什么无效。询问代码的问题必须表明您对所解决问题的理解程度最低。包括尝试过的解决方案、它们不起作用的原因以及预期结果。另请参见:堆栈溢出问题checklist@MadProgrammer:这更像是一个迭代器…@Makoto这可能只是个人问题,也就是我的问题,但我在迭代列表时遇到了从列表中删除的问题…只是使用一个?