비교 차트
비교의 근거 | HashMap | 연결된 해시 맵 |
---|---|---|
기본 | HashMap의 삽입 순서가 유지되지 않습니다. | 삽입 순서는 LinkedHashMap에 유지됩니다. |
데이터 구조 | HashMap은 HashTable을 사용하여 맵을 저장합니다. | LinkedHashMap은 맵을 저장하기 위해 Linked List와 함께 HashTable을 사용합니다. |
확장 / 구현 | HashMap은 AbstractMap을 확장하고 Map 인터페이스를 구현합니다. | LinkedHashMap은 Hashmap을 확장합니다. |
번역 | HashMap은 JDK 2.0에 도입되었습니다. | LinkedHashMap는 JDK 4.0에 도입되었습니다. |
간접비 | 비교적 적은 오버 헤드. | 지도 항목의 순서를 유지해야하기 때문에 상대적으로 더 많은 오버 헤드가 발생합니다. |
HashMap의 정의
HashMap은지도를 만드는 데 사용되는 클래스입니다. 지도 인터페이스를 구현합니다. 또한 해시 테이블을 사용하여지도에 항목을 저장할 수 있도록 AbstractMap 클래스를 확장합니다. 맵의 항목은 각 키가 값과 연관되어있는 쌍입니다. 항목의 키는 값을 검색하는 데 사용되므로 키는 고유해야합니다. 그래서 HashMap에서 중복 키를 사용할 수 없습니다. 그러나 맵의 각 엔트리에있는 키는 서로 다른 유형을 가질 수 있습니다. 즉, HashMap에 의해 생성 된 맵의 키가 이기종이 될 수 있습니다. 맵을 저장하기 위해 HashMap에서 사용하는 데이터 구조는 해시 테이블입니다.
HashMap에있는 항목의 삽입 순서가 유지되지 않습니다. HashMap을 사용하여 만든 맵에 항목을 삽입하는 것은 항목의 키로 계산 된 해시 코드를 기반으로합니다. 실수로 HashMap에 중복 키를 입력하면 이전 키 값이 제안 된 새 값으로 바뀌고 이전 값이 반환됩니다. 중복 키가 사용되지 않고 대체가 수행되지 않은 경우 키는 항상 Null을 반환합니다. 다음 예를 사용하여 해시 맵에 항목을 추가하는 방법을 살펴 보겠습니다.
Hashmap hm = 새로운 Hashmap (); hm.put ( "Ajay", 275); hm.put ( "Vijay", 250); hm.put ( "Jonny", 150); hm.put ( "Jordan", 200); System.out.println (hm); / * 출력 * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}
위의 코드에서와 같이 HashMap의 객체를 만들고 puts 메서드를 사용하여 항목을 추가 한 것을 볼 수 있으며 HashMap 객체를 인쇄 할 때 항목이 삽입 된 순서대로 인쇄되지 않습니다. 따라서 HashMap에서 항목의 순서를 반환하는 척할 수는 없습니다. HashMap은 Map 인터페이스와 AbstractMap 클래스의 모든 메소드를 사용하며 새로운 메소드를 도입하지 않습니다. 자체 생성자가 있습니다. 해시 맵의 기본 용량은 16 이며 기본 채우기 비율은 0.75 입니다.
LinkedHashMap의 정의
LinkedHashMap은지도를 만드는 데 사용되는 클래스이기도합니다. LinkedHashMap은 HashMap 클래스를 확장하고 나중에 JDK 버전 4.0에서 HashMap에 소개되었습니다. HashMap 클래스의 자식 클래스 인 LinkedHashMap은 생성자 및 메서드를 포함하는 HashMap 클래스와 정확히 동일합니다. 그러나 LinkedHashMap은 맵에 항목을 삽입하는 순서를 유지한다는 점에서 다릅니다. LinkedHashMap이 맵을 저장하는 데 사용하는 데이터 구조는 링크 된 목록 및 해시 테이블 입니다.
LinkedHashMap에는 HashMap에서 상속 된 메서드 외에도 removeEldestEntry () 라는 새로운 메서드가 하나 있습니다. 이 메소드는 맵에서 가장 오래된 항목을 제거하는 데 사용됩니다. LinkedHashMap의 기본 용량은 16이며 기본 채우기 비율은 0.75이며 이는 HashMap 클래스와 비슷합니다.
자바에서 HashMap과 LinkedHashMap의 주요 차이점
- 가장 중요한 차이점은 HashMap의 삽입 순서는 유지되지 않지만 LinkedHashMap의 삽입 순서는 유지 된다는 것입니다.
- HashMap이 맵 요소를 저장하는 데 사용하는 데이터 구조는 Hashtable 입니다. 반면, LinkedHashMap에서 사용하는 데이터 구조는 Linked list 및 Hashtable 입니다.
- HashMap 클래스는 AbstractMap 클래스를 확장하고 Map 인터페이스를 구현합니다. 그러나 LinkedHashMap 클래스는 HashMap 클래스의 하위 클래스 즉, LinkedHashMap 클래스는 HashMap 클래스를 확장합니다.
- HashMap 클래스는 JDK 2.0 버전에서 도입되었습니다. LinkedHashMap 클래스는 JDK 4.0 버전에서 나중에 소개되었습니다.
- Map에 삽입 된 요소의 순서를 유지해야하기 때문에 LinkedHashMap 클래스는 HashMap보다 오버 헤드가 많습니다.
결론:
LinkedHashMap은 맵에 삽입 된 요소의 순서가 염려되는 곳에서만 사용해야합니다.