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



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

감사합니다.


반응형

+ Recent posts