JAVA中集合HashMap嵌套联系

  1. 有这样一组数据”henan zhengzhou gongyi,henan zhengzhou xingyang,henan Kaifeng lankao,Jiangsu Suzhou gusu,jiangsu nanjing xuanwu“。每个单元用‘,’分割。单元内三个单词的意思分别是省,市,县(区)。请设计一个类,要求将上述数据存入后,拥有以下功能:

    1. 给定一个省可以列举出该省所有的市。

    2. 给定一个省可以列举出该省所有的县(区)。

    3. 给定一个省可以查到该省县(区)的数量。

测试类
import java.util.*;

public class HomeWork {
    public static void main(String[] args) {

        String date = "henan zhengzhou gongyi,henan zhengzhou xingyang,henan Kaifeng lankao,Jiangsu Suzhou gusu,jiangsu nanjing xuanwu";
        RegionUtil.loadData(date);
        RegionUtil.getCitys("henan");
        RegionUtil.getCountries("henan");
        RegionUtil.getCountrieNumber("henan");

    }

}

import java.util.*;

public class RegionUtil {
    //用来存储地区数据
    private static HashMap<String,Map> hashMap = new HashMap();
    //用来初始化数据
    public static void loadData(String date) {
        //先将字符串按照“,”分割
        String[] split = date.split(",");
        //再遍历数组分别将省市县归类
        for (int i = 0; i < split.length; i++) {
            String[] strings = split[i].split(" ");
            //省分
            String province = strings[0];
            //市
            String city = strings[1];
            //县(乡镇)
            String country = strings[2];
            //在存放省-市的map集合中,找hashmap中是否存在省,若存在将省所对应的市,放入value中,value又是一个map集合
            if (hashMap.containsKey(province)){
                //如果已存在,则将省对应的市添加到citys的HashMap中
                HashMap citys = (HashMap) hashMap.get(province);
                if (citys.containsKey(city)){
                    //如果包含了则将对应的县添加到list集合中
                    List countries = (List) citys.get(city);
                    countries.add(country);
                    citys.put(city,countries);
                }else {
                    //如果不存在市
                    List<String> list = new ArrayList<>();
                    list.add(country);
                    citys.put(city,list);
                }
            }else {
                //如果不存在省
                //创建list用来存放县
                ArrayList<String> list = new ArrayList<>();
                list.add(country);
                //创建HashMap用来保存市
                HashMap<String, List> map = new HashMap<>();
                map.put(city,list);
                //添加省-市
                hashMap.put(province,map);
            }
        }
    }

    public static void getCitys(String province) {
        //获取省
        HashMap map = (HashMap) hashMap.get(province);
        for (Object key :
                map.keySet()) {
            System.out.println("city:"+key);
        }
    }
    public static void getCountries(String province) {
        //获取县
        HashMap map = (HashMap) hashMap.get(province);
        for (Object key :
                map.keySet()) {
            System.out.println("country:"+map.get(key));
        }
    }
    public static void getCountrieNumber(String province) {
        //获取县的个数
        HashMap map = (HashMap) hashMap.get(province);
        int count = 0;
        for (Object key :
                map.keySet()) {
            count+=((List)map.get(key)).size();
        }
        System.out.println("size:"+count);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38617531/article/details/81235192