1

次のようなキーと値を格納するツリーマップがあります。

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;
         }

ここでいくつかのギャップを埋める助けが必要です。これを行うより良い方法はありますか?

4

1 に答える 1

0

//コメントに投稿するには大きすぎるため、この回答をコメントに投稿できませんでしたが、お役に立てば幸いです

public static void main(String[] args) {

    //initialize variables
    HashMap<String,ArrayList<Integer>> hm=new HashMap();
    ArrayList<Integer> values=new ArrayList<Integer>();
    values.add(0);
    values.add(1);
    values.add(2);
    hm.put("ko4", values);
    System.out.println(hm.get("ko4").get(0));//prints index 0
    System.out.println(hm.get("ko4").get(1));//prints index 1
    System.out.println(hm.get("ko4").get(2));//prints index 2

}
于 2013-10-02T19:23:41.303 に答える