我有一个ArrayList,其每个元素都是DataType类型,其中DataType是一个类:
class DataType{
String dId;
String dType;
String rId;
}
我需要从rId等于任何其他元素的dID的列表中删除所有这些元素。 即,如果DataType D1的值为dID为“abc”,而DataType D2的值为rID为“abc”,则从列表中删除D1和D2。
有人可以建议最合适的做法。
答案 0 :(得分:4)
最简单的方法是遍历列表并创建HashMap<String, List<DataType>>
。
您将每个对象映射到构成主键的dID
。
之后,您可以迭代ArrayList
,检查当前对象的rId
,看看它是否在HashMap
中。 HashMap
具有O(1)查找时间,因此这应该是非问题。如果该值存在,请删除当前值(您使用Iterator
来阻止ConcurrentModificationException
)并删除键值对的值部分内的对象。
确保您已正确实施.equals(Object o)
和.hashcode()
。