15

私は最近 HashMaps について学んでいますが、明確な答えが得られないように見える質問が 1 つあります。主な違い -

HashMap hash1 = new HashMap();

HashMap<,>hash1 = new HashMap <,> (); //Filled in with whatever Key and Value you want. 

HashMap を定義するときは、キーと値が必要だと思いました。どんな助けでも大歓迎です。ありがとうございました。

4

4 に答える 4

21

それらはあなたが持っているオプションです:

J2SE <5.0 スタイル:

 Map map = new HashMap();

J2SE 5.0+ スタイル (ジェネリックの使用):

 Map<KeyType, ValueType> map = new HashMap<KeyType, ValueType>();

Google Guavaスタイル (より短く、より柔軟):

 Map<KeyType, ValueType> map = Maps.newHashMap();
于 2012-10-30T18:09:47.877 に答える
11

HashMapの型を指定しない場合、キーと値の両方が型になりますObject

Integerたとえば、キーとString値を持つ HashMap が必要な場合は、次のようにします。

    HashMap<Integer, String> hashMap= new HashMap<Integer, String>();
于 2012-10-30T17:47:11.863 に答える
3

と の型を指定するkeyと、valueコンパイル時の型指定の強制が有効になり、型の安全性が向上します。

これにより、誤ってキーと値の型を混同しないコードを簡単に記述できるようになり、コードで明示的に宣言する必要があるキャストの量が減ります。

ただし、これらの型チェックはコンパイル時のみであることに注意することが重要です。つまり、アプリケーションが実行されると、JVM はキーと値に任意の型を使用できるようにします。

于 2012-10-30T17:52:04.000 に答える
1

- Genericsクラス、インターフェース、メソッド、変数などに暗示される可能性があります。しかし、それが使用される最も重要な理由は、Collection 型をより安全にすることです。

- 特定のタイプのオブジェクトのみが に出入りするようGenericsにします。Collections

-さらに、として知られているプロセスがあることに言及する価値がありますErasure

->Erasure、コンパイラによってジェネリック クラスとインターフェイスからtype parameterstype argumentsが削除され、ジェネリックなしで記述されたコードとの互換性が戻るプロセスです。

そう、

HashMap<String, Integer> map = new HashMap<String, Integer>();

になりますRaw type

HashMap map = new HashMap();

于 2012-10-30T18:02:01.397 に答える