根据条件从arraylist中删除元素

时间:2013-12-16 02:09:50

标签: java arraylist

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

class DataType{
 String dId;
 String dType;
 String rId;
}

我需要从rId等于任何其他元素的dID的列表中删除所有这些元素。 即,如果DataType D1的值为dID为“abc”,而DataType D2的值为rID为“abc”,则从列表中删除D1和D2。

有人可以建议最合适的做法。

1 个答案:

答案 0 :(得分:4)

最简单的方法是遍历列表并创建HashMap<String, List<DataType>>。 您将每个对象映射到构成主键的dID

之后,您可以迭代ArrayList,检查当前对象的rId,看看它是否在HashMap中。 HashMap具有O(1)查找时间,因此这应该是非问题。如果该值存在,请删除当前值(您使用Iterator来阻止ConcurrentModificationException)并删除键值对的值部分内的对象。

确保您已正确实施.equals(Object o).hashcode()