7
Map<String, Data> map = new HashMap<String,Data>();
map.put("jan", new Data("RED","M4A1",5,0,0));

次のように、キーを使用してマップからすべての情報を取得して元に戻すことなく、Dataオブジェクトの値REDを変更するにはどうすればよいですか?

map.put("jan" new Data("Blue",
      map.get("jan").Brand,
      map.get("jan").Storage,
      map.get("jan").Sold,
      map.get("jan").Bought)); 

では、データオブジェクトのすべてをやり直すのではなく、1つの値を変更するにはどうすればよいですか?

4

5 に答える 5

11

変更可能かどうかによって異なりDataます。たとえば、次のように書くことができます。

Data data = map.get("jan");
data.setColor("Blue");

マップにはオブジェクトへの参照のみが含まれていることを忘れないでください。オブジェクト内のデータを変更した場合、後で誰かがマップから参照をフェッチしたときにその変更が表示されます。

または、不変の場合は、withColorメソッドを持つ可能性があるため、次のように記述できます。

Data data = map.get("jan");
map.put("jan", data.withColor("Blue"));

あなたのDataタイプ(クラスの本名ではないことを願っています)についてもっと知らなければ、これ以上言うのは難しいです。

(また、クラスにパスカルケースのフィールドが実際にないことを願っています。これらのフィールドがプライベートであることを願っていますが、それは別の問題です...)

于 2012-09-20T16:16:35.177 に答える
4

可変であると仮定すると、フィールドDataを設定できます。"RED"

Map map = new HashMap();
map.put("jan", new Data("RED","M4A1",5,0,0));
// Later...
map.get("jan").setColor("BLUE");

が変更可能でない場合Data、唯一のオプションはput、新しい値を記述したとおりにすることです。

于 2012-09-20T16:17:56.210 に答える
1

プロパティにが含まれDataていると仮定します。settercolor

public class Data {
  private String color;

  public void setColor(String color) {
    this.color = color;
  }
}

get必要なDataオブジェクトだけを作成して、そのプロパティを設定できます。

Data data = map.get("jan");
data.setColor("blue");
于 2012-09-20T16:17:13.123 に答える
1

Dataクラスに適切なセッターを追加します。例:

class Data {
    setColor(String color){...}
}


map.get("jan").setColor("BLUE");
于 2012-09-20T16:17:18.177 に答える
0

コードスニペットを見つけてください:

Map<String, Data> map = new HashMap<String,Data>();

public class Data{

private String color;

  public void setColor(String color) {
    this.color = color;
  }

public String getColor() {
    return this.color;
  }

publicData(String color){
this.setColor(color);
}
}


map.put("jan", new Data("RED","M4A1",5,0,0));

今、あなたはこのようにすることができます:

Data data = map.get("jan");
data.setColor("black");

これは機能します。

ここで、クラスDataには、色という1つのフィールドのみが含まれています。さらにフィールドを追加できます。ありがとう

于 2012-09-20T16:48:02.657 に答える