Карта Java: обратный хронологический порядок - PullRequest
0 голосов
/ 15 октября 2011

У меня есть следующая функция, которая должна возвращать карту дат в long, чтобы вы перебирали записи в обратном хронологическом порядке.

counts - это LinkedHashMap, поэтому записи хранятся впорядок их вставки (в данном случае хронологический):

public Map<Date, Long> getCountsChronological() {
   Map<Date, Long> chronologicalMap =
     new TreeMap<Date, Long>(Collections.reverseOrder());
   chronologicalMap.putAll(counts);
   return chronologicalMap;
}

Эта функция не работает, хотя в теории кажется, что она должна.Когда я перебираю карту, которую она возвращает, я все еще получаю записи в хронологическом порядке.

1 Ответ

2 голосов
/ 15 октября 2011

Невозможно воспроизвести - у меня отлично работает:

import java.util.*;

public class Test {

    public static void main(String[] args) {
        Map<Date, Long> map = new HashMap<Date, Long>();

        map.put(new Date(100), 100L);
        map.put(new Date(400), 400L);
        map.put(new Date(300), 300L);
        map.put(new Date(200), 200L);

        map = reverseChronological(map);
        for (Map.Entry<Date, Long> entry : map.entrySet()) {
            System.out.println(entry.getKey().getTime());
        }
    }    

    public static Map<Date, Long> reverseChronological(Map<Date, Long> input) {
        Map<Date, Long> chronologicalMap =
            new TreeMap<Date, Long>(Collections.reverseOrder());
        chronologicalMap.putAll(input);
        return chronologicalMap;
    }
}

Вы уверены, что не перебираете оригинальную карту вместо возвращенной?

...