簡體   English   中英

更改Hashmap中Object的單個參數

[英]Change a single parameter of Object in Hashmap

我必須為學校做一個非常基本的“制作 CAD 項目”,並決定讓它更具挑戰性,並添加一種與項目更正確交互的方法。 基本上,我有一個Point class 帶有一個以xy坐標作為輸入的構造函數,並且還有一些方法。

Point(double x, double y) {
    this.x = x;
    this.y = y;
}

我希望用戶能夠創建他/她想要的盡可能多的點 - 因此我去了Hashmaps (我也嘗試過列表,但我讀過Hashmaps更適合這個,即使我找不到具體的答案在我的項目中我想要什么)。 我的代碼中的相關片段如下所示:

Map<Integer, Point> pMap = new HashMap<Integer, Point>();
double[] singlePoints = new double[2]; // temporarily store x and y coordinates
...
...
...
switch (intInput) {
    case 1:
        System.out.println("Create point? y/n");
        charInput = sc.next().charAt(0);
        if(java.lang.Character.toLowerCase(charInput) == 'y') {
            System.out.println("X coordinate: ");
            singlePoints[0] = sc.nextDouble();
            System.out.println("Y coordinate: ");
            singlePoints[1] = sc.nextDouble();
            pMap.put(pointCounter, new point(singlePoints[0], singlePoints[1]));
            pointCounter ++;
            break;
        } else {
            break;
        }
    case 2:
        System.out.println("Which point shall be edited?: ");
        int pointC2 = sc.nextInt();
        System.out.println("X or Y coordinate? ");
        char c2Input = java.lang.Character.toLowerCase(sc.next().charAt(0));
        if(c2Input == 'x') {
            ???
        }
}

帶問號的部分是我只想更改x坐標的地方。 由於我沒有給新Point (直接存儲在Hashmap )命名,因此我無法使用我的 getter 和 setter 方法訪問它。 我如何從此處開始 go 以更改 object 的單個參數(在此示例中為“x”)在Hashmap內的給定索引處? 如果不可能,我應該 go 恢復正常Lists嗎?如果是,我該怎么做? (另外,快速說明:到目前為止,我們還沒有在講座中使用ListsHashmaps ,所以我的知識是基於我在互聯網上找到的,而不是來自經驗或大學)

當用戶在 pointC2 中輸入所需的點時,您可能會在pointC2中找到存儲的密鑰。

Point selectedPoint = pMap.get(pointC2);
selectedPoint.setX(newX);

// pMap.get(pointC2).setX(newX);

您確實將密鑰存儲在

pMap.put(pointCounter, new point(singlePoints[0], singlePoints[1]));

你的關鍵是pointCounter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM