【问题标题】:retainAll for many lists (Java)为许多列表保留All (Java)
【发布时间】:2011-06-07 18:04:44
【问题描述】:

我有一堆列表 (List<SomeClass>),我想得到交叉点。 SomeClass 看起来像这样:

public class SomeClass {
  private String a;
  private String b;

  // getters and setters
}

只有当成员 a 和 b 相等时,它才应该成为交集的一部分。我该怎么做?

我可能会以某种方式使用Collection.retainAll(...)。但是我有大量的 List 对象要比较...

【问题讨论】:

    标签: java intersection


    【解决方案1】:

    为您的班级相应地覆盖 equalshasCode 方法。见Implementing equals。这两个方法隐式驻留在所有类的根 Object 实例中,并且可以调整/覆盖它们以实现遵循某些语义的实例标识,就像您的情况一样。

    这个other SO question 也解决了这个问题,您可以找到实现equalshasCode 方法的示例。

    关于如何获取 N 个列表中的所有元素。你可以用第一个列表初始化一个HashSet,然后遍历其余的调用retainAll

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2019-05-31
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多