2011-10-14 6 views
0

다음과 같은 함수를 사용하여 역순으로 항목을 반복 할 수 있도록 date to longs의 맵을 반환해야합니다.Java Map : 역순으로 배열

countsLinkedHashMap이므로 항목들이 (이 경우 연대기 인) 삽입 된 순서에 저장됩니다 : 그것은 이론적으로 보이지만,

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

이 기능은 작동하지 않습니다 그것은 그 할까요. 반환하는지도를 반복 할 때 항목을 연대순으로 표시합니다.

+0

? 짧지 만 완전한 예가 정말로 도움이 될 것입니다. 'counts '항목이 나타나는 순서는 부적절합니다. –

+0

좋아요, 질문을 약간 편집했습니다. – Charlotte

+0

짧지 만 완성 된 프로그램에 대한 제 대답을보십시오. 그것과 비슷한 것을 만들 수 있습니까 * 실패 *? –

답변

2

재현 할 수 없습니다 - 나를 위해 잘 작동합니다 : 당신은 당신이 원래지도 대신에 반환 한 반복하지 있는지

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

있습니까?

+0

네, 저 역시 잘 작동합니다! 나는 밖으로 나가고있는 테이블에있는 헤더에 속았습니다. 헤더 역할을했던 날짜 목록은 되돌려지지 않았으므로 카운트 목록이 잘못되지 않았다는 인상하에있었습니다. 그것은 모두 함께 일했다 .. – Charlotte