共通对象名单我有两个表 -比较对象的两个列表,并返回其具有两个
ArrayList<MyObject> list1 -> [obj1, obj2, obj3, obj4, obj5, obj6]
ArrayList<MyObject> list2 -> [obj1, obj6, obj7, obj8]
有任何实用工具方法的Java API已经存在,可以给的唯一共同的记录列表二?
预期列表 - > [obj1, obj6]
myObject的是这样的 -
class MyObject {
public Integer number;
public String name;
public Integer parent;
public String parentName;
}
我只需要使用number
和name
做比较。
我使用retainAll
或removeAll
以获得所需的列表是知道的方法。但问题是,我不能覆盖equals
方法MyObject
,因为它用于某些不同的目的。并且retainAll
或removeAll
方法似乎不接受Comparator
对象。
我知道另一个解决方案是遍历列表并找到常见的列表。我正在寻找是否已经有一些方法可以做到这一点。
谢谢。
它令人失望,因为'java.util.List'方法没有使用'Comparator'的重载方法。无论如何,我创建了一个独立的实用程序方法,它需要一个比较器并在其中添加所有脏代码,所以也许我可以在需要时重复使用相同的代码..... btw感谢您的建议!它符合要求。 – Kshitij 2012-07-12 09:02:55
@Kshitij嗯我不知道你的确切要求是什么,我相信你有很好的理由,但是你是那种违反流程的人,通过使用'equals'方法来处理那些不是' t等于;)要小心,不要使用任何也依赖于equals的东西,这可能很难追踪错误! – Miquel 2012-07-12 09:07:45
实际上,在我的情况下,'equals'方法也用于比较两个实体,正如我们通常所做的那样,上面的场景是一个特殊情况,我只需要比较几个字段。我早就应该指出,我上面展示的MyObject只是一个示例,而不是实际的对象,实际的对象更大,而且具有完全不同的领域。 – Kshitij 2012-07-13 04:24:01