Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
관리 메뉴

ㅇ.ㅇ

[Java Code] Map 정렬문제 본문

Today I Learned

[Java Code] Map 정렬문제

yun_ 2023. 2. 13. 09:29
반응형

 

상황

회사코드에서 로컬 디렉토리에서 파일들의 이름을 하나씩 가져와서 새로 선언한 hashMap에 넣는 로직이 있었는데, 분명 디렉토리에서는 제대로 된 정렬로 가져오는데 put 할때는 뒤죽박죽으로 저장이 되었다.

원인

hashmap은 정렬이 안된다. 넣은 순서대로 저장되지않고 뒤죽박죽이다.

해결

정렬을 지키고 싶으면 linkedHashMap을 사용하면 된다.

linkedHashMap이란?

Map 인터페이스를 구현한 클래스 중 하나로, put을 통해 입력한 순서를 기억하는 자료구조이다. (LinkedHshMap에 저장되는 키와 값은 Map.Entry 클래스를 구현한 Node 클래스에 저장된다. Node 클래스에는 before, after 멤버가 있는데, LiknkedhashMap에 입력된 순서에 따라 연결리스트 구조를 형성한다. 전체적인 사용법은 hashMap과 동일하다. 

둘의 성능차이가 있을까?

스택오버플로우에 관련 글에 따르면 LinkedhashMap이 더 성능이 좋다는 의견이 많았다. 이 부분에 대해서는 계속 찾아보기로 하자.

https://stackoverflow.com/questions/12998568/hashmap-vs-linkedhashmap-performance-in-iteration-over-values

 

HashMap vs LinkedHashMap performance in iteration over values()

Is there any performance difference between HashMap and LinkedHashMap for traversal through values() function?

stackoverflow.com


 

참고 : https://hbase.tistory.com/136

 

[Java] LinkedHashMap 사용법 및 예제 - HashMap과 차이점

LinkedHashMap Map 인터페이스를 구현한 클래스 중에 TreeMap과 HashMap은 매우 단순해서 많이 사용된다. 그 외에 조금 특이한 Map 클래스들이 있는데 LinkedHashMap이 그 중 하나다. LinkedHashMap은 Map에 입력된

hbase.tistory.com

 

반응형