我必须按照3个标准对列表进行排序。我不知道怎么做。
标准是:
如果对象位于另一个列表中,则该对象不在另一个列表中(最重要)之前。
我有一个可能性列表,如果对象可能性高于列表中的其他对象对象
如果int值低于它之前的其他对象(不太重要)
我只知道compareTo方法,但我可以使用compareTo方法对3个标准后的列表进行排序吗?
谢谢
EDIT1:
compareTo(Object object) {
if(list.contains(object) && list.contains(this) ) {
return this.compareToSecond(object);}
else if( list.contains(object) && !list.contains(this)) {
return -1;}
else{ return 1;}}
compareToSecond(Object object) {
if(this.liklihood > object.liklihood) {
return 1;}
else if(this.liklihood < object.liklihood) {
return -1;}
else {
return 0;
}}
这样可能吗?
答案 0 :(得分:3)
编辑:我已在示例Comparator
是的,你可以按照你想要的标准对列表进行排序。您只需要实现界面Comparable
或特定的Comparator
。示例代码:
Collections.sort(myList, new Comparator<YourClass>() {
public int compare(YourClass yc1, YourClass yc2) {
// criteria 1
if (anotherList.contains(yc1) && !anotherList.contains(yc2)) {
return 1;
}
// criteria 2 and 3(not 100% clear to me)
return yc1.getLikelihood() - yc2.getLikelihood();
}
);
答案 1 :(得分:1)
以同样的方式根据1个标准对其进行排序
应以某种方式订购这三个标准
只需实现compareTo / compare方法
以正确的顺序考虑它们。
如果两个对象基于标准K相等,则 只有这样才能检查它们之间的关系 基于标准K + 1。
答案 2 :(得分:0)