【问题标题】:Remove elements from arraylist based on a condition [closed]根据条件从arraylist中删除元素[关闭]
【发布时间】:2023-03-07 21:02:01
【问题描述】:

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

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

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

有人可以建议最合适的方法吗?

【问题讨论】:

  • 不,您尝试一下并告诉我们您的尝试是否以及为什么不起作用。
  • 要求代码的问题必须表明对所解决问题的最低理解。包括尝试的解决方案、它们为什么不起作用以及预期的结果。另请参阅:堆栈溢出问题清单
  • @MadProgrammer:它更像是一个迭代器......
  • @Makoto 这可能只是个人问题(即我的),但我在迭代它们时遇到了从Lists 删除的问题......
  • 只需使用Set?

标签: java arraylist


【解决方案1】:

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

之后你可以遍历你的ArrayList,检查当前对象的rId,看看它是否在HashMap中。 HashMap 的查找时间为 O(1),所以这应该不是问题。如果值存在,则删除当前值(您使用Iterator 来防止ConcurrentModificationException)并删除键值对的值部分内的对象。

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

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 2012-04-25
    • 2017-08-31
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    相关资源
    最近更新 更多