HashMap에서 map.KeySet() 정렬관련 질문있습니다.
384
작성한 질문수 1

입력 순서가 BACDE 이면 HashMap을 배열로 생각하였을 때, 순서대로 저장된다면 KeySet()의 배열은 [B, A, C, D, E]가 되는게 맞지 않나요? for(char x : keySet())의 출력 값이 ABCDE로 나오는 것을 보면 별다른 sort과정 없이 HashMap에서 Key 값을 정렬해서 출력해주는 것으로 보입니다.
HashMap에 존재하는 Key값들이 자동적으로 정렬이 되고 있다고 봐도 될까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 답변드리겠습니다. HashMap은 입력 순서를 유지하지 않으며, 자동으로 키 값을 정렬하지도 않습니다. HashMap은 내부적으로 해시 테이블을 사용하여 키와 값의 쌍을 저장합니다. 그렇기 때문에 키의 순서는 해시 함수의 결과에 따라 결정되며, 입력 순서나 자연스러운 순서와는 무관하게 저장됩니다.
만약 키를 특정 순서대로 정렬하고 싶다면, TreeMap을 사용하거나, HashMap의 키를 별도로 정렬하는 추가 작업이 필요합니다. TreeMap은 자연 순서 또는 커스텀 순서대로 키를 정렬하여 저장하는 Map 구현체입니다.
따라서 HashMap에서 KeySet()의 출력 값이 ABCDE로 나왔다면, 이는 우연히 키의 해시 값이 이 순서대로 저장되었거나, 다른 곳에서 정렬된 키를 사용했을 가능성이 있습니다. 자동으로 정렬이 된다고 보기보다는, 필요한 경우 TreeMap 사용 또는 키를 정렬하는 로직을 추가하여 사용해야 합니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
21
1
갑자기 채점 사이트가 바뀌었어요
0
29
1
문제 리스트 페이지
0
25
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
80
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
63
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
70
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
84
2
6-7 강의에서
0
47
1
6-6. 장난꾸러기 질문 있습니다.
0
43
1
강의 수강후 코딩테스트
0
106
1
answer 변수 사용 여부
0
43
1
2중 for문
1
84
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
69
1
이런 풀이는 어떨까요
0
42
1
자바 스트림 방식의 효율성 질문 드립니다.
0
56
1
알고리즘 자료 구조들..
0
60
1
StringBuilder vs BufferdWriter
0
47
1
원더랜드(프림)
0
48
1
이런 코드는 어떤가요?
0
59
1
bfs 풀이
0
56
1
병합정렬
0
55
1





