2013-10-02 4 views
0

뭔가 이상합니다.해시 맵을 반복합니다.

이 내 코드입니다 : S : 3, 2, 1,

4는 왜 순서가 모두 혼합 :

Map<String, Object[]> data = new HashMap<String, Object[]>(); 
    data.put("1", new Object[] {"VENDOR_NAME", "COUNTRY_CODE", "PREFIX" , "RATE" , "CURRENCY" }); 
    data.put("2", new Object[] {10d, "John", 1500000d}); 
    data.put("3", new Object[] {2d, "Sam", 800000d}); 
    data.put("4", new Object[] {3d, "Dean", 700000d}); 

    Set<String> keyset = data.keySet(); 
    int rownum = 0; 
    for (String key : keyset) { 
     System.out.println(key); 
    } 

결과

?

답변

2

주문이 모두 혼합 된 이유는 무엇입니까?

HashMap은 엘리먼트의 반복 순서를 보장하지 않기 때문에. 일정한 순서를 얻지 못할 것입니다. 게재 신청서를 받으려면 LinkedHashMap을 사용하십시오.

+0

고마워요. – susparsy

+0

알파벳 순서를 원하면 TreeMap을 사용하십시오. – Thilo

+0

@susparsy. 답변을 수락 된 것으로 표시 할 수 있습니다. –

0

당신은 docs 살펴있는 경우 : - Map 인터페이스의

해시 테이블을 기반으로 구현. 이 구현은 모든 선택적지도 작업을 제공하고 은 null 값과 null 키를 허용합니다. HashMap 클래스는, 동기하지 않고 null를 허가하는 점을 제외 해, Hashtable에 상당하는 대체로 입니다.이 클래스는 맵의 순서를 보증하지 않습니다. 특히 에서 주문이 일정하게 유지 될 것이라고 보장하지 않습니다.

그렇다면 주문이 모두 뒤섞여있는 것입니다. @Rohit을 제안 했으므로 주문을 유지하려면 LinkedHashMap을 사용해보십시오.

관련 문제