Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでのEnumMapとHashMapの違い


EnumMapはJDK5で導入されました。これは、マップのキーとして列挙型を使用するように設計されています。これは、マップインターフェイスの実装でもあります。 EnumMapのすべてのキーは同じ列挙型である必要があります。 EnumMapでは、キーをnullにすることはできず、キーを押すとNullPointerExceptionがスローされます。

javaドキュメントによる-

EnumMapは内部的に配列として使用され、この表現は非常にコンパクトで効率的です。

HashMapは、Mapインターフェースの実装でもあります。キーと値の形式でデータを保存するために使用されます。 1つのnullキーと複数のnull値を含めることができます。 HashMapでは、キーをプリミティブ型にすることはできません。 Java HashMap実装は、ハッシュ関数が要素をバケット間で適切に分散すると仮定して、基本操作(getおよびput)に一定時間のパフォーマンスを提供します。

Sr。いいえ。
キー
EnumMap
HashMap

1

基本

列挙型キーで使用するための特殊なMap実装

HashMapは、Mapインターフェースの実装でもあります。

2

ヌルキー

nullキーを持つことはできません。

1つのnullキーと複数のnull値を持つことができます

3

パフォーマンス

すべての操作は一定時間で実行されるため、HashMapよりも高速です

HashMapよりも遅い

4.

内部実装

内部的に配列を使用します

内部でハッシュテーブルを使用します

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());
      }
   }
}

  1. Javaでのイテレータと列挙の違い

    IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。 コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります: * hasMoreElements() * nextElement() 一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります- * hasNe

  2. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり