Java中数组散列的散列

Java中数组散列的散列,java,data-structures,Java,Data Structures,我正试图用Java实现数组散列的散列,我想如果我使用匿名的话会很好(我忘记了确切的术语/我不知道怎么称呼它) HashMap团队= 新HashMap(){{ put(“东”,新的HashMap(){{ put(“大西洋”,新字符串[]{“bkn”,“bos”,“phi”,“tor”,“ny”}); put(“central”,新字符串[]{“chi”,“cle”,“det”,“ind”,“mil”}); put(“东南”,新字符串[]{“atl”,“cha”,“mia”,“orl”,“wsh”}

我正试图用Java实现数组散列的散列,我想如果我使用匿名的话会很好(我忘记了确切的术语/我不知道怎么称呼它)

HashMap团队=
新HashMap(){{
put(“东”,新的HashMap(){{
put(“大西洋”,新字符串[]{“bkn”,“bos”,“phi”,“tor”,“ny”});
put(“central”,新字符串[]{“chi”,“cle”,“det”,“ind”,“mil”});
put(“东南”,新字符串[]{“atl”,“cha”,“mia”,“orl”,“wsh”});
}});
put(“west”,新的HashMap(){{
put(“西北”,新字符串[]{“den”,“min”,“okc”,“por”,“犹他州”});
put(“太平洋”,新字符串[]{“gs”,“lac”,“lal”,“phx”,“sac”});
put(“西南”,新字符串[]{“dal”,“hou”,“mem”,“no”,“sa”});
}});
}};
我的问题是,是否有另一种实现方法考虑可读性,或者完全改变实现? 我知道java不是合适的工具,但我的老板让我这么做。 另外,请让我知道正确的术语。TIA使用辅助方法

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


只要我们不关心运行速度,为什么不使用一种设计用于表示分层数据结构(如JSON)的语言呢?JAVA对它有很好的外部库支持

格森去营救

    @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
    );

您的意思是
匿名内部类吗
?也许您想将此类放在codereview.stackexchange上。com@durron597我正准备这么做,但我想知道其他选择。我将更新我的问题,谢谢。@SJuan76我不确定我是否倾向于匿名对象。有人能证实Shuan76的回答吗?谢谢在这里,我要做的主要事情是将这些城市存储在一个文件中,或者更好的是,存储在某种SQL数据库中(我真的不想回答这个问题,但如果您非常喜欢的话,我会这样做)。这样,如果它发生变化,您就不必更改应用程序的源代码。我不建议这样做。它增加了额外的工作,但没有什么好处。它会让你的启动速度降低几微秒,即使在交易延迟较低的系统中,这也很少是重要的。我不喜欢这种快捷方式,因为它更容易出错<代码>“foo,bar.baz”。拆分(“,”将在运行时编译并失败,而
新字符串[]{“foo”,“bar”,“baz”}将引发编译器错误。不值得保存的几次击键。为什么不使用varargs呢<代码>专用void addTeams(字符串区域、字符串…代码)
;:)@atamanroman两个
“foo,bar.bar”
“foo”,“bar.bar”
都可以编译。您可以使用varargs,但由于没有什么优势,键入的时间会更长。我最终决定将Gson与json文件一起使用(由@durron597建议)
new String[] { "bkn", "bos", "phi","tor", "ny" }
"bkn,bos,phi,tor,ny".split(",");
    @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
    );