【发布时间】:2015-04-01 07:24:23
【问题描述】:
我有兴趣问题。有一个抽象类,它将被子类扩展。 在抽象类中有如下方法:
public abstract class MyAbstractClass {
protected List<MyObject> findSpecificObjects(List<MyObject> objectsToSelectFrom, List<MyObject> objectsToCompare) {
List<MyObject> selected = new ArrayList<MyObject>();
//there I need to select elements from objectsToSelectFrom
//using MyComparatorAnalogue with objectsToCompare
return selected;
}
protected class MyComparatorAnalogue implements ??? {
/*this comparator analogue should have an access to objectsToCompare
it must select elements from objectsToSelectFrom with property myProperty=someValue, where someValue - value that no one element from objectsToCompare have in the same property myProperty
*/
}
}
我为什么要这样做,因为我需要能够在子类中覆盖 MyComparator。有什么办法可以做我想做的事吗?我查看了 Apache Commons Collections,但在这种情况下没有找到任何可以帮助我的东西。
例如:
objectsToSelectFrom = {[key=Michael,value=23],[key=Luis,value=44],[key=Andrew,value=26]}
objectsToCompare = {[key=John,value=23],[key=Luis,value=44]}
假设myProperty 是value 属性MyComparatorAnalogue 应该选择[key=Andrew,value=26] 元素。
希望我描述得通俗易懂。谢谢。
【问题讨论】:
-
您要根据 while 列表过滤
List<MyObject>吗? -
是的,类似的。但是 objectsToSelectFrom 和 objectToCompare 中的对象并不相同,它们只是具有(或不具有)相同的 myProperty 值。
标签: java collections apache-commons comparator java-6