次の違いは何ですか?山括弧なしのハッシュマップのインスタンス化と、ハッシュマップのインスタンス化の違いは何ですか?
new HashMap();
対new HashMap<Integer, String>();
?
私は前者を使ったことはありませんが、それを見たことがありますが、知っておくべき違いがありますか?
次の違いは何ですか?山括弧なしのハッシュマップのインスタンス化と、ハッシュマップのインスタンス化の違いは何ですか?
new HashMap();
対new HashMap<Integer, String>();
?
私は前者を使ったことはありませんが、それを見たことがありますが、知っておくべき違いがありますか?
まず、ハッシュマップのデータの種類はわかりません。このマップには、任意のタイプのオブジェクトを配置できます。次に、このマップのキーと値の種類を指定します。これらのタイプはマップにのみ挿入できます。このアプローチはジェネリックスと呼ばれます。
new Hashmap<Integer, String>()
である必要があります。Object
タイプが使用され、取得するとObject
のインスタンスが返されます。 2番目のケースでは、キーがInteger
タイプであり、値がString
タイプであることを指定しています。したがって、それに応じて追加する必要があります。取り出すときには、String
の値のオブジェクトとInteger
のオブジェクトのキーが得られ、前のケースのようにキャストは必要ありません。P.私はInteger
を使用し、int
を使用しない理由は、何らかの方法でnull
を返す必要がある場合は、使用可能な型が "nullable"であるべきだと思います。 int
はnull可能ではありません。
次の文は、キー値タイプがraw
のマップを作成します。 (java.lang.Object)。第二の文で
HashMap map=new HashMap();
、あなたは(Java Genericsを読む)Key
とValue
のタイプを指定しています。
HashMap<Integer,String> map=new HashMap<Integer,String>();
2番目の例はコンパイルされません。 –