Hashmap清除值

时间:2016-08-27 17:00:50

标签: java android arraylist hashmap

我有这个代码。当我清除ArrayList时,HashMap中的值也会清除。我如何保存数据?

public class Stations extends AppCompatActivity {
    public static Map<String, ArrayList<String>> cities = new HashMap<>();

    ...

    public void parseFrom() {
        cities.clear();
        ArrayList<String> citiesList = new ArrayList<>();
        try {
            JSONObject jObject = new JSONObject(loadJSON());
            JSONArray jArray = jObject.getJSONArray("citiesFrom");
            String countryTitle = null;

            for (int i = 0; i < jArray.length(); i++) {
                JSONObject jsonObject = jArray.getJSONObject(i);
                if ((countryTitle != null) && (!countryTitle.equals(jsonObject.getString("countryTitle")))) {
                    cities.put(countryTitle, citiesList);
                    citiesList.clear();
                }
                countryTitle = jsonObject.getString("countryTitle");
                citiesList.add(jsonObject.getString("cityTitle"));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

当我使用citiesList.clear();时,所有值都清除,但键仍然“活着”。

1 个答案:

答案 0 :(得分:1)

这是因为它们在内存中具有相同的引用。

尝试这样做:

cities.put(countryTitle, new ArrayList<String>(citiesList));

但是,如果您真正想要的是将其从哈希地图中删除,那么您必须拨打cities.remove(countryTitle)而不是仅清除城市数组。