【问题标题】:Change a single parameter of Object in Hashmap改变Hashmap中Object的单个参数
【发布时间】:2021-01-22 15:42:44
【问题描述】:

我必须为学校做一个非常基本的“制作 CAD 项目”,并决定让它更具挑战性,并添加一种与项目进行更恰当交互的方法。 基本上,我有一个Point 类,其构造函数将xy 坐标作为输入,并且还有一些方法。

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

我希望用户能够创建他/她想要的尽可能多的点 - 因此我去了Hashmaps(我也尝试了列表,但我读到Hashmaps 更适合这个,即使我在我的项目中找不到我想要的具体答案)。 我的代码中相关的 sn-p 如下所示:

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 方法访问它。 我如何从这里继续更改 Hashmap 内给定索引处的对象的单个参数(在本例中为“x”)?如果不可能,我应该回到正常的Lists,如果是这样,我该怎么做? (另外,请注意:到目前为止,我们还没有在讲座中到达ListsHashmaps,所以我的知识是基于我在互联网上找到的,而不是来自经验或大学)

【问题讨论】:

    标签: java object hashmap


    【解决方案1】:

    当用户在pointC2 中输入所需的点时,您可能会在地图中找到存储的密钥。

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

    您确实将密钥存储在

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

    您的密钥是pointCounter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 2012-09-13
      • 2021-04-29
      • 2014-07-20
      • 1970-01-01
      • 2017-09-21
      相关资源
      最近更新 更多