Java写省市区递归代码
时间: 2023-06-29 12:06:07 浏览: 127
以下是一个Java递归示例来遍历省市区:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ProvinceCityArea {
private Map<String, List<String>> cityMap = new HashMap<String, List<String>>();
private Map<String, List<String>> areaMap = new HashMap<String, List<String>>();
public ProvinceCityArea() {
initCityMap();
initAreaMap();
}
// 初始化城市数据
private void initCityMap() {
List<String> beijing = new ArrayList<String>();
beijing.add("北京市");
cityMap.put("北京市", beijing);
List<String> tianjin = new ArrayList<String>();
tianjin.add("天津市");
cityMap.put("天津市", tianjin);
List<String> shanghai = new ArrayList<String>();
shanghai.add("上海市");
cityMap.put("上海市", shanghai);
// 其他省市略去,可以自己添加数据
}
// 初始化地区数据
private void initAreaMap() {
List<String> dongcheng = new ArrayList<String>();
dongcheng.add("东城区");
dongcheng.add("西城区");
dongcheng.add("崇文区");
dongcheng.add("宣武区");
areaMap.put("北京市", dongcheng);
List<String> heping = new ArrayList<String>();
heping.add("和平区");
heping.add("河东区");
heping.add("河西区");
heping.add("南开区");
heping.add("河北区");
areaMap.put("天津市", heping);
List<String> huangpu = new ArrayList<String>();
huangpu.add("黄浦区");
huangpu.add("卢湾区");
huangpu.add("徐汇区");
huangpu.add("长宁区");
huangpu.add("静安区");
areaMap.put("上海市", huangpu);
// 其他省市区数据略去,可以自己添加数据
}
// 获取省市区数据
public List<String> getProvinceCityArea(String province, String city, String area) {
List<String> result = new ArrayList<String>();
// 如果省份为空,则返回所有省份
if (province == null || "".equals(province)) {
result.addAll(cityMap.keySet());
} else {
// 如果城市为空,则返回该省下的所有城市
if (city == null || "".equals(city)) {
result.addAll(cityMap.get(province));
} else {
// 如果地区为空,则返回该城市下的所有地区
if (area == null || "".equals(area)) {
result.addAll(areaMap.get(city));
} else {
// 如果都不为空,则返回具体的地区名称
result.add(area);
}
}
}
return result;
}
public static void main(String[] args) {
ProvinceCityArea pca = new ProvinceCityArea();
List<String> result = pca.getProvinceCityArea("北京市", "北京市", null);
for (String str : result) {
System.out.println(str);
}
}
}
```
在上面的示例中,我们首先通过 `initCityMap()` 和 `initAreaMap()` 方法初始化了城市和地区的数据。然后,我们通过 `getProvinceCityArea()` 方法来获取省市区数据。如果省份为空,则返回所有省份;如果城市为空,则返回该省下的所有城市;如果地区为空,则返回该城市下的所有地区;如果都不为空,则返回具体的地区名称。
在 `main()` 方法中,我们调用 `getProvinceCityArea()` 方法并传递省、市和区的名称来获取具体的数据。
阅读全文