创建树状结构

时间:2013-01-11 07:52:14

标签: java collections

在数据库中,我有以这种格式的数据:

enter image description here

要求是以这种格式表示excel中的数据:国家/地区名称构成选项卡名称。

enter image description here

我正在考虑将每个数据库行放在一个对象中。要实现格式化,我需要遍历国家/地区列表,然后在每个国家/地区列表(例如美国)中,选择国家/地区列表(纽约州,纽约州)然后在那个循环中迭代每个州(例如纽约州),这样你就得到了纽约和阿拉比。对其他状态重复此操作&然后走出循环&然后以同样的方式迭代其他国家。

但我面临的困难是,如何在Java中表示允许我以所需格式迭代的数据?因此,当我对美国进行迭代时,它给了我纽约和新泽西州,当我迭代新泽西州时,它给了我其中的城市。我很震惊。请指点一下让我开始

2 个答案:

答案 0 :(得分:2)

使用Map<String, Map<String, List<String>>>

  1. 第一个字符串是国家的关键字。
  2. 地图是一个地图,其中键是州,值是城市列表。
  3. 确保在插入数据之前正确初始化数据。例如,我在这里插入“纽约市”作为纽约州的美国城市:

    Map<String, Map<String, List<String>>> fullMap = new HashMap<String, Map<String, List<String>>>();
    fullMap.put("US", new HashMap<String, List<String>>());
    fullMap.get("US").put("NY", new ArrayList<String>());
    fullMap.get("US").get("NY").add("New York");
    

    要获取(美国,纽约州)的城市列表,您必须这样做:

    List<String> nyCities = map.get("US").get("NY");
    

    ...给出我们的初始化过程应该返回一个包含一个项目的列表。

答案 1 :(得分:0)

在Java中,您可以使用包含其他List作为元素的List

List<List<List<City>>>

在班级City拥有城市的情况下,内部列表包含一个州的所有城市,中间列表包含一个国家/地区的所有州名单,外部列表包含国家/地区。

另一个想法是从按国家和州订购的数据库中获取记录,然后逐个浏览它们,每当遇到新国家时,都会启动新选项卡,当遇到新状态时,启动新表。