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()); |
그렇다면.. 둘의 성능차이가 있을까? 라는 의문을 품게 되었습니다.
왜냐하면, LinkedHashMap은 정렬이 되어 저장되기 때문입니다.
결론을 말씀드리면 LinkedHashMap이 약간 더 우세하다라는 의견이 더욱 많았습니다.
맵을 Create하는 시간이 조금더 걸리는반면, Access속도와 Iterate속도가 조금 더 빠르게 작용하였습니다.
(물론, 제가 퍼포먼스 테스트한것은 아닙니다.)
하지만, HashMap과 LinkedHashMap의 최종 속도 차이는 큰차이가 없다는 결론 입니다.
(아래 참고 링크를 확인해주세요.)
* 출처 StackOverflow : https://stackoverflow.com/questions/12998568/hashmap-vs-linkedhashmap-performance-in-iteration-over-values
간단하게, 성능차이가 궁금하여 검색해보던 중 포스팅 정리하게 되었습니다.
감사합니다.
'IT > Java' 카테고리의 다른 글
JAVA JSON 라이브러리 구글 GSON 알아보자(Google Gson) (0) | 2020.03.11 |
---|---|
JAVA SpringMVC 웹서버로 Google FCM HTTP POST 푸시 보내기 (9) | 2018.12.07 |
JAVA SOAP 요청/응답 (SOAP Request/Response) (3) | 2018.11.09 |