これでいくつかの解決策を確認しましたが、それらはすべて「静的な」単語を使用したり、 HashMap。私は人の名前(キー)とテストのスコア(値)を含むマップを作成しようとしています。私はこれを行う値のためにオブジェクトを渡すしようとしています:Mapに格納された各オブジェクトは最後のオブジェクトに格納された値を返します
HashMap<String, Scores> map = new HashMap<String, Scores>();
List<Integer> scores = new ArrayList<Integer>();
scores.add(55);
scores.add(66);
scores.add(77);
map.put("foo", new Scores(scores));
scores.clear();
scores.add(70);
scores.add(80);
scores.add(90);
map.put("bar", new Scores(scores));
System.out.println(map.get("foo").getScores());
System.out.println(map.get("bar").getScores());
System.out.println(map.get("foo").getAverage());
と私のスコアクラスのために私は次のようしている:
:List<Integer> scores = new ArrayList<Integer>();
private int sum = 0;
public Scores(List<Integer> s){
this.scores = s;
}
public double getAverage(){
int count = 0;
for (int x: this.scores){
this.sum += x;
count++;
}
return this.sum/count;
}
public List<Integer> getScores(){
return this.scores;
}
私は私のコードを実行すると、私は次のような出力を得ます
[70, 80, 90]
[70, 80, 90]
80.0
私は自分のスコアを格納するために "静的"を使用していませんし、古い値を繰り返すことを避けるためにclear()を後で使用します。私はHashMap <>変数を作成するときにもクラス名を使用しています。
「map.get( "foo")」と「map.get( "bar")」の両方が同じ値を返す理由を教えてください。彼らはまた、実例を提供することができますか?ありがとう!
マップのすべてのキーに_same_リストオブジェクトを割り当てます。これは、同じケーキボックスに別の付箋を置いたようなものです... –