日期排序修复?

Dates sorting fix?

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.

为什么这不起作用?

你的比较方法有一个小问题if (int1 == int2)不会比较值但会比较引用,试试这个:

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