【发布时间】:2015-02-16 10:04:49
【问题描述】:
我需要编写一个比较器,它接受一个类型为 A 的对象 A 和一个类型为 B 的对象 B。这两个对象不是公共对象的扩展。它们确实不同,但我需要通过其中的公共字段来比较这两个对象。我必须使用比较器接口,因为对象存储在 Set 中,并且在我必须使用 CollectionUtils 进行操作之后。我用谷歌搜索了一下,我找到了 Comparator 的解决方案,但只有相同的类型。
我试图在这个方向上实施一个想法,但我不知道我是否走在正确的道路上。
public class MyComparator implements Comparator<A>, Serializable {
private B b;
public MyComparator(B b){
this.b = b;
}
@Override
public int compare(A old, A otherOne) {
int value = 0;
if (!old.getField().equals(b.getField())) {
value = 1;
}
return value;
}
}
有可能总是给出答案,但我没有找到合适的词在 Google 中搜索。有人建议吗?
发送
P.S:我将两个对象添加到不同的集合中:
TreeSet<A> setA = new TreeSet<A>(myComparator);
TreeSet<B> setB = new TreeSet<B>(myComparator);
之后我会这样想:
TreeSet<??????> retain = CollectionUtils.retainAll(setA, setB);
TreeSet<??????> remove = CollectionUtils.removeAll(setA, setB);
【问题讨论】:
-
这里问了一个类似的问题。 stackoverflow.com/questions/12414288/…
-
您希望如何使用这个比较器?我能想到的所有具有比较器参数的东西都在处理单一类型......
标签: java collections compare