Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 EnumMap과 HashMap의 차이점

<시간/>

EnumMap은 JDK5에 도입되었습니다. Enum을 Map의 키로 사용하도록 설계되었습니다. Map 인터페이스의 구현이기도 합니다. EnumMap의 모든 키는 동일한 열거형 유형이어야 합니다. EnumMap에서 key는 null일 수 없으며 모든 키가 NullPointerException을 발생시킵니다.

자바 문서에 따라 -

EnumMap 내부에서 배열로 사용하는 이 표현은 매우 간결하고 효율적입니다.

HashMap은 Map 인터페이스의 구현이기도 합니다. Key 및 Value 형식으로 데이터를 저장하는 데 사용됩니다. 하나의 null 키와 여러 개의 null 값을 포함할 수 있습니다. HashMap에서 키는 기본 유형이 될 수 없습니다. Java HashMap 구현은 해시 함수가 버킷 간에 요소를 적절하게 분산한다고 가정할 때 기본 작업(get 및 put)에 대해 일정한 시간 성능을 제공합니다.

Sr. 아니요.

열거형 맵
해시맵

1

기본

열거형 키와 함께 사용하기 위한 특수 맵 구현

HashMap은 Map 인터페이스의 구현이기도 합니다.

2

널 키

null 키를 가질 수 없습니다.

하나의 null 키와 여러 개의 null 값을 가질 수 있습니다.

3

성능

모든 작업은 일정한 시간에 실행되므로 HashMap보다 빠릅니다.

HashMap보다 느립니다.

4.

내부 구현

내부적으로 Array를 사용합니다.

내부적으로 Hashtable을 사용합니다.

5.

주문

EnumMap은 키의 자연스러운 순서로 키를 저장합니다.

HashMap이 정렬되지 않았습니다.

EnumMap의 예

import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
public class EnumMapExample {
   public enum LaptopEnum {
      HCL, DELL, IBM
   };
   public static void main(String[] args) {
      // create enum map
      EnumMap map = new EnumMap(LaptopEnum.class);
      map.put(LaptopEnum.HCL, "100");
      map.put(LaptopEnum.DELL, "200");
      map.put(LaptopEnum.IBM, "300");
      // print the map
      for (Map.Entry m : map.entrySet()) {
         System.out.println(m.getKey() + " " + m.getValue());
      }
   }
}

HashMap의 예

import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HashMapExample {
   public static void main(String[] args) {
      // create Hash map
      Map map = new HashMap();
      map.put("HCL", "100");
      map.put("DELL", "200");
      map.put("IBM", "300");
      // print the map
      for (Map.Entry m : map.entrySet()) {
         System.out.println(m.getKey() + " " + m.getValue());
      }
   }
}