次のようなキーと値を格納するツリーマップがあります。
key value
ko4 23
ko4 53
ko4 34
po1 100
po1 8
po1 90
po3 99
po3 234
po3 34
すべてのキーの平均を取りたい (そして最終的にそれらを新しいファイルに出力したい)。したがって、平均を計算して別のマップに配置します。これは、新しいファイルに出力する前に値で並べ替える必要があるためです。新しいマップは次のようになります。
Key Value
ko4 36.6
po1 66
po3 122.3
これを機能させようとしていますが、苦労しています。多分私は物事を過度に複雑にしています。これが私が持っているものです。
Map<String, Integer> map = new TreeMap<String, Integer>();
int sum = 0;
int average;
int number = 1;
map.put(key, value); //I actually read in a file to do this, but so it is reproducible I have it like this, people can put in whatever they please
String lastkey = map.key(0);//I don't know if I can get key somehow
for (int i = 0;i < map.size();i++){ //for the size of the map
thiskey = map.key(i);
if (thiskey.equals(lastkey)){ //if it is the same key as the last one
if (i == 0){
sum = map.get(i);
}else{
sum = sum + map.get(i); //add the values
number++;
}
average = sum / number;
}else{
lastkey = thiskey;
}
ここでいくつかのギャップを埋める助けが必要です。これを行うより良い方法はありますか?