본문 바로가기
IT/Java

JAVA HashMap VS LinkedHashMap (차이점, 성능차이, 사용방법)

by bamcong 2019. 7. 9.


JAVA언어에서 어쩌면 가장 많이 활용하며 사용하는 Map입니다.

Map은 기본적으로 Key와 Value를 묶어 한쌍 으로 저장 합니다.

그리고 많은 양의 데이터를 빠르게 검색 할 수있는 성능의 장점이 있습니다.


JAVA의 Map도 종류가 많은데요. (Hash, Tree, Linked)

그중 HashMap과 LinkedHashMap의 차이점에 대해 알아 보려합니다.


1. HashMap, LinkedHashMap 사용법 


1
HashMap hashMap = new HashMap<>();
cs


HashMap 객채 생성을 합니다. 

HashMap은 제네릭타입을 지정하여 생성 할 수도 있습니다.

LinkedHashMap도 동일합니다.

(LinkedHashMap linkedHashMap = new LinkedHashMap<>();)


1
2
3
4
hashMap.get("key"); // 키쌍 매핑된 데이터를 가져옵니다. return value
hashMap.isEmpty(); // 맵안에 데이터가 있는지 여부를 확인 합니다. return true/false
hashMap.containsKey("key"); // 맵안에 해당키가 있는지 여부를 확인합니다. return true/false 
hashMap.size(); // 맵의 크기를 확인 합니다. return int
cs


기본적으로 많이 사용하는 HashMap 메소드들 입니다.

LinkedHashMap도 동일합니다.


get() : 매핑한 키의 value값을 가져옵니다.

isEmpty() : 맵안 데이터 존재 여부를 확인 합니다. 비어있다면 true를 리턴합니다.

containsKey() : 맵안에 해당 키가 존재하는지 확인합니다. 있다면 true를 리턴합니다.

size() : 맵의 크기를 확인합니다. 키쌍매핑이 1개라면 int 1 리턴합니다.






2. HashMap VS LinkedHashMap  차이점&성능


먼저, HashMap과 LinkedHashMap의 큰차이점은 키쌍을 매핑했을때 순서 입니다.


HashMap은 순서대로 저장이 되지 않습니다.


1
2
3
4
5
6
HashMap hashMap = new HashMap<>();
hashMap.put("apple""apple");
hashMap.put("banana""banana");
hashMap.put("tomato""tomato");
            
System.out.println(hashMap.toString());
cs




반면, LinkedHashMap은 순서대로 저장 됩니다.


1
2
3
4
5
6
LinkedHashMap linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("apple""apple");
linkedHashMap.put("banana""banana");
linkedHashMap.put("tomato""tomato");
                
System.out.println(linkedHashMap.toString());

cs




그렇다면.. 둘의 성능차이가 있을까? 라는 의문을 품게 되었습니다.

왜냐하면, LinkedHashMap은 정렬이 되어 저장되기 때문입니다.


결론을 말씀드리면 LinkedHashMap이 약간 더 우세하다라는 의견이 더욱 많았습니다.

맵을 Create하는 시간이 조금더 걸리는반면, Access속도와 Iterate속도가 조금 더  빠르게 작용하였습니다.

(물론, 제가 퍼포먼스 테스트한것은 아닙니다.)


하지만, HashMap과 LinkedHashMap의 최종 속도 차이는 큰차이가 없다는 결론 입니다.

(아래 참고 링크를 확인해주세요.)

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



간단하게, 성능차이가 궁금하여 검색해보던 중 포스팅 정리하게 되었습니다.

감사합니다.


반응형