9章19

TANIAOKA, Akihiro - Apr 9 - - Dev Community

了解です。以下のようにコードにコメントを追加して説明します。

// Itemクラスの定義。idとnameの2つのプライベートフィールドを持つ。
public class Item {
    private int id;
    private String name;

    // コンストラクタ。Itemオブジェクトが作成されるときにidとnameが設定される。
    public Item(int id, String name) {
        this.id = id;
        this.name = name;
    }

    // idフィールドのゲッターメソッド。
    public int getId() {
        return id;
    }

    // nameフィールドのゲッターメソッド。
    public String getName() {
        return name;
    }
}

// メインクラスSampleの定義。
public class Sample {

    // mainメソッド。プログラム実行のエントリーポイント。
    public static void main(String[] args) {
        // Integerをキーとし、Itemオブジェクトを値とするHashMapを生成。
        Map<Integer, Item> map = new HashMap<Integer, Item>();

        // mapにキー1でItemオブジェクトを追加。初めての追加なのでサイズは増える。
        map.put(1, new Item(1, "A"));
        // mapにキー2でItemオブジェクトを追加。新しいキーなのでサイズは増える。
        map.put(2, new Item(2, "B"));
        // mapにキー3でItemオブジェクトを追加。新しいキーなのでサイズは増える。
        map.put(3, new Item(3, "C"));
        // mapにキー1でItemオブジェクトを追加。既にキー1は存在するため値が更新されるがサイズは増えない。
        map.put(1, new Item(1, "A"));
        // mapにnullキーでItemオブジェクトを追加。nullキーも許容されるためサイズは増える。
        map.put(null, new Item(0, "default"));

        // マップの現在のサイズを出力。結果は「4」。キー1は重複していて1回しか数えられず、nullキーが加わる。
        System.out.println(map.size());
    }
}
Enter fullscreen mode Exit fullscreen mode

コメントは各行の操作を明確に説明しています。この説明から、map の最終的なサイズが 4 である理由がわかります。キー 1 が2回使用されているが、ハッシュマップは重複したキーを許可しないため、新しい Item オブジェクトで古いものを上書きしています。他のキー 23、および null はそれぞれ独自のエントリを持っており、合計で4つのユニークなキーがあります。

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .