我有 ObjectA
& ObjectB
.两者都有一个 property
称为 ID
(Long)
.
我有 2 List
, ListA
其中包含对象类型 ObjectA
和 ListB
其中包含对象类型 ObjectB
.
我要填写ListC
, 以及来自 ListA
的所有对象和 ListB
但没有重复。
我无法使用 contains
方法因为ObjectA
和 ObjectB
是不同的对象,我必须通过属性 ID
进行比较.
我知道最好的解决方案是 ObjectA
和 ObjectB
extends
一个Super class
,但我现在不能改变它,我只需要找到一个临时解决方案来让它工作。
我试过这个:
listC.addAll(listA);
for(int j=0; j<ListA.size(); j++) {
for(int k=0; k<ListB.size(); k++) {
ObjectA objectA = ((ObjectA)listA.get(j));
ObjectB objectB = ((ObjectB)listB.get(k));
if(!objectA.getId().equals(objectB.getId())) {
listC.add(objectB);
}
}
}
有什么想法吗?我快要疯了。
最佳答案
如果它们都具有相同的属性,请编写一个只有值 ID(可能带有 getter)的接口(interface)(这就是它们存在的原因),并在您的类 ObjectA 和 ObjectB 中实现它。然后你可以编写自己的比较器(使用你的接口(interface)类型)或者因为你只需要等于,只需重写这个方法(那不会干净)。这应该是最干净的方式。
关于Java通过公共(public)属性比较不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057166/