-2

次のような HashMap があります。

( student1 => Map( name => Tim,         
                   Scores => Map( math => 10,
                                  physics => 20,
                                  Computers => 30),
                    place => Miami,
                    ranking => Array(2,8,1,13),
                  ),
  student2 => Map ( 
                   ...............
                   ...............
                ),
   ............................
   ............................
);

キーは特定のタイプ (オブジェクト、文字列、整数など) ではないため、この複雑な HashMap をどのように「飛び込む」ことができますか?

編集:「ダイブ」とは、すべてのキーと値を反復処理することを意味します。

4

3 に答える 3

3

どうですか

Map<Long, Student> studentIdToStudentMap = new HashMap<Long, Student>();

class Student{
  private String name;
  private List<Score> scores;
  private Location location;
  private List<Rank> rankings;
  //const, equals(), hashcode(), accessors
}

class Score{
   private String subject;
   private float marksObtained;
   private float totalMark;
   private Long examId;
   //const, equals(), hashcode(), accessors
}

同じく

于 2012-06-13T05:01:08.357 に答える
1

完全にテストされておらず、いかなる目的にも適合することが保証されていません (あなたの質問はやや漠然としています)。

public void doStuffWithMap(Map yourMap)
{
  for(Map.Entry entry : yourMap.entrySet())
  {
    if (entry.getValue() instanceof Map)
      doStuffWithMap((Map)entry.getValue());
    else
      System.out.println(entry.getKey() + ": " + entry.getValue());
  }
}
于 2012-06-13T05:05:04.490 に答える
1

のようなものを使用します

private static printKeyValues(Map map) {
  for (Object key : map.keySet()) {
    if(map.get(key) instanceOf Map) {
      printKeyValues((Map)map.get(key))
    } else {
      System.out.println("key:" + key+" value:"+ map.get(key));
    }
  }
}
于 2012-06-13T05:05:29.583 に答える