0

どうすれば自分のマップを反転した新しいマップを取得できるか知りたいですか? 私の実際のマップは次のようになります。

centralMap = new HashMap<String, Map<String, String>>();
nestedMap = new HashMap<String, String>();

nestedMap は put-method で作成されたばかりです。要素を配置するには、メイン メソッドで次を使用します。

TrueStringMap2D testmap = new TrueStringMap;
testmap.put("Mickey Mouse","Mathematics","1.0");
testmap.put("Mickey Mous","Physics","1.3");
testmap.put("Minnie","Chemistry","2.3");
......

今度は、「flipped()」という名前のメソッドを使用してマップを反転させたいと思います。nestedMap のキーを centralMap のキーに、またはその逆に変更したいので、すべての「主題」(数学、物理学など) 、..) には、生徒と成績のネストされたマップがあります..どうすればそれを行うことができますか?

私のTrueString2Dでクラスを作成することは許可されていません.. おそらくリスト内のcentralMapのキーと別のリスト内のnestedMapのキーをコピーしてから、新しいマップを作成する必要があります HashMap>(); (私のcentralMapと同じ)、nestedMapの古いキーのリストを新しく作成されたマップ(newCentralMapなど)にキーとしてコピーし、値として、centralMapの古いキーをnewNestedMapと値にコピーしますnewNestedMapのは古いマップのものと同じです..しかし、それを行う方法が正確にはわかりません.マップ内のリストをコピーできるかどうか:S

どうもありがとうございました

4

3 に答える 3

2

あなたのアイテムを保管するために別のものを使用してください:

  • Guava には、求めている機能を実装するTableクラスがあります
  • さらに柔軟性が必要な場合は、インメモリ データベースを検討してください
于 2012-05-07T11:53:52.303 に答える
0

HashMap<String, Map<String, String>>()代わりに使用しないのはなぜですかTrueStringMap2D

import java.util.HashMap;
import java.util.Map;

public class Flip {


    public static Map <String, Map<String, String>> flip(Map <String, Map<String, String>> map){
        Map <String, Map<String, String>> result = new HashMap<String, Map<String, String>>();
        for (String key : map.keySet()){
            for (String key2 : map.get(key).keySet()){
                if (!result.containsKey(key2)){
                    result.put(key2, new HashMap<String, String>());
                }

                result.get(key2).put(key, map.get(key).get(key2));
            }
        }


        return result;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Map <String, Map<String, String>> map = new HashMap<String, Map<String, String>>();

        map.put("Mickey", new HashMap<String, String>());
        map.get("Mickey").put("Physics", "1.1");
        map.get("Mickey").put("Maths", "1.2");

        map.put("Minnie", new HashMap<String, String>());
        map.get("Minnie").put("Physics", "1.1");
        map.get("Minnie").put("Chemistry", "1.3");

        System.out.println(map);

        System.out.println(flip(map));
    }

}

出力

{Minnie={Physics=1.1, Chemistry=1.3}, Mickey={Maths=1.2, Physics=1.1}}
{Maths={Mickey=1.2}, Physics={Minnie=1.1, Mickey=1.1}, Chemistry={Minnie=1.3}}
于 2012-05-07T12:05:07.943 に答える
0

私はこれに地図を使用しません。を使用しCollection<PersonGrade>ます。

class PersonGrade {
   String name;
   String subject;
   Double grade;
}

次に、「すべての被験者のミッキー マウスのすべての等級」に関するレポートを生成する場合は、コレクションを繰り返し処理し、その基準に適合するオブジェクトを取得します。膨大な量のデータを扱っている場合、これは少し遅くなる可能性があることはわかっています。しかし、私は本当にそれを試してみます。

于 2012-05-07T11:54:26.647 に答える