2014-02-22 43 views
0

我必须在3个标准后排序列表。我不知道该怎么做。如何在3个标准之后对列表进行排序?

指标分析如下:

  1. 如果对象是在另一份名单,比未在其他列表(最重要的)对象之前是它。

  2. 我有似然性列表,并且如果所述对象可能是在列表

  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; 
}} 

是有可能这样吗?

回答

1

以同样的方式根据1条标准对其进行排序。
这3个标准应以某种方式订购。
只要执行比较/比较方法
按正确的顺序考虑它们。

如果基于标准■两个对象是相等的,
只有继续前进,检查基于标准K + 1它们之间的关系

+0

确定第一次有排序的第一条件后的列表中,如果两者相同,则第二条件后,如果tehy仍然是相同的,在排序之后的第三排序它,标准。所以我实现了比较,如果两个是相同的,然后我排序在第二条件的o路径? – user3336368

+0

只是基于我的笔记来实现compareTo。不要在3次传球或类似的事情上排序。只需专注于获取compareTo的权利。其余的很容易。 –

0

我不知道该怎么办呢

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

,你需要的是Comparators

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(); 
        } 
); 
+0

谢谢你,我会试试看。 – user3336368

+0

请参阅编辑样例实施 – trylimits

相关问题