情景描述
-
有这样一组数据”henan zhengzhou gongyi,henan zhengzhou xingyang,henan Kaifeng lankao,Jiangsu Suzhou gusu,jiangsu nanjing xuanwu“。每个单元用‘,’分割。单元内三个单词的意思分别是省,市,县(区)。请设计一个类,要求将上述数据存入后,拥有以下功能:
-
给定一个省可以列举出该省所有的市。
-
给定一个省可以列举出该省所有的县(区)。
-
给定一个省可以查到该省县(区)的数量。
-
代码实现
代码中带有详细的注解说明。
测试类
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);
}
}