2015-11-12 32 views
0
class Datum { 
     public final Integer dan; 
     public final Integer mesec; 
     public final Integer godina; 

     public Datum(String datum) { 
       String[] komponente = datum.split("\\."); 

       dan = Integer.valueOf(komponente[0]); 
       mesec = Integer.valueOf(komponente[1]); 
       godina = Integer.valueOf(komponente[2]); 
     } 
     @Override 
     public String toString() { 
       return dan + "." + mesec + "." + godina + "."; 
     } 
} 

public class DomaciZadatakZaMozganje1 { 
     public static void main(String[] args) { 
       Datum[] datumi = new Datum[] { 
           new Datum("11.4.2015."), 
           new Datum("12.5.2013."), 
           new Datum("21.5.2015."), 
           new Datum("11.4.2014."), 
           new Datum("14.4.2015."), 
           new Datum("14.4.2014."), 
           new Datum("21.4.2015."), 
           new Datum("12.5.2014."), 
           new Datum("11.4.2013."), 
           new Datum("12.5.2015."), 
           new Datum("14.4.2013."), 
           new Datum("16.5.2015.") 
       }; 

       Svetovid.out.println("Unsorted :"); 
       for (Datum datum : datumi) { 
         Svetovid.out.println(datum); 
       } 

       Arrays.sort(datumi, new KomparatorDatuma()); 

       Svetovid.out.println("Sorted: "); 
       for (Datum datum : datumi) { 
         Svetovid.out.println(datum); 
       } 

     } 
} 

class KomparatorDatuma implements Comparator<Datum> { 
     private Comparator<Integer> komparator = new ObrnutiKomparatorBrojeva(); 
     @Override 
     public int compare(Datum datum1, Datum datum2) { 
       int rezultat = komparator.compare(datum1.godina, datum2.godina); 
       if (rezultat == 0) 
         rezultat = komparator.compare(datum1.mesec, datum2.mesec); 

       if (rezultat == 0) 
         rezultat = komparator.compare(datum1.dan, datum2.dan); 

       return rezultat; 
     } 
} 

class ObrnutiKomparatorBrojeva implements Comparator<Integer> { 
     @Override 
     public int compare(Integer int1, Integer int2) { 
       if (int1 == int2) { 
         return 0; 
       } else if (int1 < int2) { 
         return 1; 
       } else { 
         return -1; 
       } 
     } 
} 

結果是:日期排序修復?這種

14.4.2013. 
11.4.2013. 
12.5.2013. 
12.5.2014. 
14.4.2014. 
11.4.2014. 
16.5.2015. 
12.5.2015. 
21.4.2015. 
14.4.2015. 
21.5.2015. 
11.4.2015. 

爲什麼這不起作用?

+0

嗯,你應該可以在這裏發佈的代碼 - 發生了什麼事時,你試過嗎?請注意,您的ObrnutiKomparatorBrojeva類是不必要的 - KomparatorDatuma.compare只能使用Integer.compare。 –

+1

另請注意,對於講英語的用戶來說,使用英文名稱(年,月等)的代碼示例會更具可讀性 –

+1

此外,這不是我得到的結果 - 使用您發佈的代碼(更改使用'System.out.println')它對我來說工作正常,顯示最新的結果。 –

回答

0

你有小問題,比較法if (int1 == int2)不會比較值,但參考,試試這個:

public int compare(final Integer int1, final Integer int2) { 
    return int2.compareTo(int1); 
}