如何在3个标准后对列表进行排序?

时间:2014-02-22 09:13:42

标签: java sorting

我必须按照3个标准对列表进行排序。我不知道怎么做。

标准是:

  1. 如果对象位于另一个列表中,则该对象不在另一个列表中(最重要)之前。

  2. 我有一个可能性列表,如果对象可能性高于列表中的其他对象对象

  3. 如果int值低于它之前的其他对象(不太重要)

  4. 我只知道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;
    }}
    

    这样可能吗?

3 个答案:

答案 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)

  

我不知道该怎么做

你不会知道任何事情,直到你自己尝试任何事情。

您需要的是Comparators