3

私はJavaでHashofHashes of Arraysを実装しようとしていますが、匿名の何とか何とかを使用するといいと思いました(正確な用語を忘れました/それを呼び出す方法がわかりません)。

HashMap<String, HashMap<String, String[]>> teams = 
    new HashMap<String, HashMap<String, String[]>>(){{
        put("east", new HashMap<String, String[]>(){{
            put("atlantic", new String[] { "bkn", "bos", "phi","tor", "ny" });
            put("central", new String[] { "chi", "cle", "det", "ind", "mil" });
            put("southeast", new String[] { "atl", "cha", "mia", "orl", "wsh" });
        }});
        put("west", new HashMap<String, String[]>(){{
            put("northwest", new String[] { "den", "min", "okc", "por", "utah" });
            put("pacific", new String[] { "gs", "lac", "lal", "phx", "sac" });
            put("southwest", new String[] { "dal", "hou", "mem", "no", "sa" });
        }});
    }};

私の質問は、読みやすさを考慮して実装する別の方法があるのか​​、それとも実装を完全に変更するのかということです。Javaが適切なツールではないことは知っていますが、上司からそうするように言われました。また、正しい用語を教えてください。TIA

4

2 に答える 2

3

実行速度を気にしない限り、JSON のような階層化されたデータ構造を表現するように設計された言語を使用してみませんか? JAVAには、優れた外部ライブラリのサポートがあります...

救助にGson!

    @SuppressWarnings("unchecked")
    HashMap teams = 
    new Gson().fromJson(
        "{'east' : { 'atlantic'  : ['bkn', 'bos', 'phi','tor', 'ny']," +
        "            'central'   : ['chi', 'cle', 'det', 'ind', 'mil']," +
        "            'southeast' : ['atl', 'cha', 'mia', 'orl', 'wsh']}," +
        " 'west' : { 'northwest' : ['den', 'min', 'okc', 'por', 'utah']," +
        "            'pacific'   : ['gs', 'lac', 'lal', 'phx', 'sac']," +
        "            'southwest' : ['dal', 'hou', 'mem', 'no', 'sa']}}",
        HashMap.class
    );

http://code.google.com/p/google-gson/

于 2012-11-20T14:55:05.180 に答える
2

ヘルパー メソッドの使用

private void addTeams(String area, String codes) {
    String[] areas = area.split("/");
    Map<String, String[]> map = teams.get(areas[0]);
    if (map == null) teams.put(areas[0], map = new HashMap<String, String[]>());
    map.put(areas[1], codes.split(", ?"));
}

Map<String, Map<String, String[]>> teams = new HashMap<String, Map<String, String[]>>();{
    addTeams("east/atlantic", "bkn, bos, phi, tor, ny");
    addTeams("east/central", "chi, cle, det, ind, mil");
    addTeams("east/southeast", "atl, cha, mia, orl, wsh");
    addTeams("west/northwest", "den, min, okc, por, utah");
    addTeams("west/pacific", "gs, lac, lal, phx, sac");
    addTeams("west.southwest", "dal, hou, mem, no, sa");
}

交換できます

new String[] { "bkn", "bos", "phi","tor", "ny" }

"bkn,bos,phi,tor,ny".split(",");
于 2012-11-20T14:24:42.050 に答える