我正在整理地图,但原始地图不会受到影响

时间:2015-01-28 20:15:39

标签: java

我试图在方法中对地图进行排序。但原始地图没有排序。我知道我正在创建一个新的地图实例,并将原始地图分配给新地图实例并对其进行排序。但是我如何在这里对原始地图进行排序

private void sortData(Map<String, Map<String, List<String>>> resultData) {
    System.out.println("result data before sort : "+resultData);
    Map<String, List<String>> sortedData =  new TreeMap(Collections.reverseOrder());
    for(Map.Entry<String, Map<String, List<String>>> modEntry : resultData.entrySet()) {
        sortedData.putAll(modEntry.getValue());
        System.out.println("Sorted : "+sortedData);
        for (Iterator<Entry<String, List<String>>> iterator = sortedData.entrySet().iterator(); iterator.hasNext();) {
            Entry<String, List<String>> entry = (Entry<String, List<String>>)iterator.next();
            List<String> stats = (List<String>)entry.getValue();
            Collections.sort(stats, new Comparator<String>() {
                DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                @Override
                public int compare(String o1, String o2) {
                    try {
                        return f.parse(o2).compareTo(f.parse(o1));
                    } catch (ParseException e) {
                        throw new IllegalArgumentException(e);
                    }
                }
            });
        }
    }
    System.out.println("result date after sort : "+resultData);
}

这里我的原始地图是&#39; resultData&#39;。我反向排序&#39; resultData&#39;的价值。通过创建树图的新实例来按键。排序后,原始数据仍未排序。我知道我正在排序不同的地图并期望对不同的地图进行排序,但如何对原始地图进行排序?

1 个答案:

答案 0 :(得分:0)

我添加了resultData.put(modEntry.getKey(),sortedData);在外部for循环中它解决了问题。

相关问题