1. ホーム
  2. java

[解決済み] HashMapとintをキーとする

2022-05-18 14:07:49

質問

整数をキー、オブジェクトを値とするHashMapを構築しようとしています。

私の構文は次のとおりです。

HashMap<int, myObject> myMap = new HashMap<int, myObject>();

しかし、返されたエラーは - Syntax error on token "int", Dimensions expected after this token - 私はキーとして数字を保存する必要があるだけなので、なぜ次元を追加しなければならないのか(つまり、intを配列にする)理解できない。

私は何をすることができますか?

事前にありがとうございます! :)

どのように解決するのですか?

HashMapは内部でオブジェクトをキーとして使っているので、プリミティブは使えません。そのため、Objectを継承したオブジェクト(つまり、任意のオブジェクト)しか使えません。

これはHashMapのput()関数ですが、見ての通りKにObjectを使用しています。

public V put(K key, V value) {
    if (key == null)
        return putForNullKey(value);
    int hash = hash(key);
    int i = indexFor(hash, table.length);
    for (Entry<K,V> e = table[i]; e != null; e = e.next) {
        Object k;
        if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
            V oldValue = e.value;
            e.value = value;
            e.recordAccess(this);
            return oldValue;
        }
    }

    modCount++;
    addEntry(hash, key, value, i);
    return null;
}

"k = e.key"という式でわかるはずです。

Integerのようなラッパーを使い、autoboxingすることをお勧めします。