public static void main(String[] args) {
List<City> cityList = new ArrayList<>();
cityList.add(new City(1, 0, "北京", "北京"));
cityList.add(new City(2, 0, "内蒙", "内蒙"));
cityList.add(new City(3, 0, "河北", "河北"));
cityList.add(new City(11, 1, "东城", "北京东城"));
cityList.add(new City(12, 2, "呼市", "内蒙新呼市"));
cityList.add(new City(13, 3, "唐山", "河北唐山"));
cityList.add(new City(14, 1, "西城", "北京西城"));
cityList.add(new City(21, 11, "南锣鼓巷", "北京东城南锣鼓巷"));
cityList.add(new City(22, 12, "新城区", "内蒙新呼市新城区"));
cityList.add(new City(23, 13, "哈哈区", "河北唐山哈哈区"));
cityList.add(new City(24, 11, "南洛惜香", "北京东城南洛惜香"));
cityList.add(new City(25, 14, "西城广场", "北京西城西城广场"));
List<HashMap<String, String>> list = new ArrayList<>();
Map<String, Object> listSz = new HashMap<>();
Map<String, Object> map = getCitys(listSz, cityList, cityList, 0);
System.out.println(JSON.toJSONString(map));
}
// System.out.println(getList(map));
// List<Map<String, Object>> l = new ArrayList<>();
// String str = "";
// System.out.println("-----------");
// System.out.println(getCity(l, cityList, cityList, 0));
/**
* 省市区递归
* @param listSz 存放
* @param cityList 省市区集合
* @param cityOldList 省市区集合
* @param status
* @return
*/
public static Map<String, Object> getCitys(Map<String, Object> listSz, List<City> cityList, List<City> cityOldList, int status) {
for (City city : cityList) {
if (city.getParentId() == 0 || status == 1){
Map<String, Object> listSzx = new LinkedHashMap<>();
cityList = cityOldList.parallelStream().filter(f -> f.getParentId() == city.getId()).collect(Collectors.toList());
String mapKey = city.getCityAllName();
listSzx.put("description", city);
if (!cityList.isEmpty()){
getCitys(listSzx, cityList, cityOldList, 1);
listSz.put(mapKey, listSzx);
}else{
listSz.put(mapKey, listSzx);
}
}
}
return listSz;
}
实现以下效果
{
"pName" : "河北",
"id" : 3,
"parentId":0,
"childen":{
"cName" : "唐山",
"id" : 13,
"parentId":3,
"childen":{
"qName" : "哈哈区",
"id" : 3,
"parentId":13
}
}
},
@Data
class City{
private int id, parentId;
private String cityName, cityAllName;
public City(int id, int parentId, String cityAllName, String cityName){
this.id = id;
this.parentId = parentId;
this.cityAllName = cityAllName;
this.cityName = cityName;
}
}
以上代码赋值run即可查看已有效果(代码任意修改,能实现效果即可)