将数据存储到hashmap

时间:2013-12-01 16:00:28

标签: java android hashmap

我有点不知所措,需要你的建议。

我使用JSON从数据库中获取一些字符串并将它们存储到hashmap中,我无法弄清楚正确存储父和子的方法。

// looping through All JSON array
                for (int i = 0; i < data.length(); i++) {
                    JSONObject c = data.getJSONObject(i);

                    // Storing each json item in variable

                    String city = c.getString(TAG_CITY);
                    String street = c.getString(TAG_STREET);



                        HashMap<String, List<String>> ExpListData = new HashMap<String, List<String>>();
                        ExpListData.put(key, value)



                }

我无法弄清楚将所有街道地址存储到不同城市的方法。我知道我可以为一个城市的每条街道创建List<String>,但这不是一个选项,因为数据库可能有城市,我不知道

1 个答案:

答案 0 :(得分:1)

每个for循环都会丢弃您的ExpListData。如果您想要一个以城市为关键的地图,并且该城市的所有街道都是值,请使用以下内容:

// looping through All JSON array
HashMap<String, List<String>> ExpListData = new HashMap<String, List<String>>();
for (int i = 0; i < data.length(); i++) {
     JSONObject c = data.getJSONObject(i);

     // Storing each json item in variable
     String city = c.getString(TAG_CITY);
     String street = c.getString(TAG_STREET);

     List<String> streets = ExpListData.get(key);
     if (streets == null) {
         streets = new ArrayList<String>();
         ExpListData.put(key, streets);
     }
     streets.add(value);
 }

ExpListData将包含以每个城市为关键字的地图。该值将是与该城市相关的所有街道的列表。

线List<String> streets = ExpListData.get(key);获取已经输入的实际城市街道。这是必要的,因为否则每次都会重写密钥的值,而不是与先前存在的值组合。

如果有可能,您可以在一个城市获得2次街道,则可以使用HashSet<String>代替ArrayList<String>。同样规范城市名称(即toLowerCase().trim())可能需要获得所需的结果(取决于您的数据)。请记住,城市名称不是唯一的(即我认为在美国有不止一个)斯普林菲尔德。所以也许使用城市和邮政编码的组合将是最好的。