用java8写一个县级市递归的树形结构
时间: 2024-02-23 22:57:37 浏览: 75
java写的递归建树型结构
5星 · 资源好评率100%
好的,我可以帮您实现一个县级市递归的树形结构。以下是一个简单的Java 8代码示例:
```java
import java.util.ArrayList;
import java.util.List;
public class City {
private String name;
private List<City> subCities;
public City(String name) {
this.name = name;
subCities = new ArrayList<>();
}
public void addSubCity(City city) {
subCities.add(city);
}
public String getName() {
return name;
}
public List<City> getSubCities() {
return subCities;
}
public static void main(String[] args) {
City beijing = new City("北京市");
City haidian = new City("海淀区");
City xicheng = new City("西城区");
City chaoyang = new City("朝阳区");
City dongcheng = new City("东城区");
beijing.addSubCity(haidian);
beijing.addSubCity(xicheng);
beijing.addSubCity(chaoyang);
beijing.addSubCity(dongcheng);
City shanghai = new City("上海市");
City huangpu = new City("黄浦区");
City xuhui = new City("徐汇区");
City changning = new City("长宁区");
City pudong = new City("浦东新区");
shanghai.addSubCity(huangpu);
shanghai.addSubCity(xuhui);
shanghai.addSubCity(changning);
shanghai.addSubCity(pudong);
List<City> cities = new ArrayList<>();
cities.add(beijing);
cities.add(shanghai);
printCities(cities, 0);
}
private static void printCities(List<City> cities, int level) {
for (City city : cities) {
System.out.print(getPrefix(level));
System.out.println(city.getName());
if (!city.getSubCities().isEmpty()) {
printCities(city.getSubCities(), level + 1);
}
}
}
private static String getPrefix(int level) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < level; i++) {
sb.append("- ");
}
return sb.toString();
}
}
```
在这个示例中,我们定义了一个 `City` 类,包含了城市名称和下属城市列表。我们使用 `addSubCity` 方法将子城市添加到城市列表中。我们还实现了一个 `printCities` 方法,该方法接受一个城市列表和一个级别参数,以递归方式打印城市的树形结构。我们还提供了一个 `getPrefix` 方法,该方法返回所需数量的连字符,以便在输出中显示正确的缩进级别。
在 `main` 方法中,我们创建了几个城市对象,并将它们添加到一个城市列表中。然后,我们调用 `printCities` 方法,将城市列表和初始级别(即0)传递给它。程序将打印出以下结果:
```
北京市
- 海淀区
- 西城区
- 朝阳区
- 东城区
上海市
- 黄浦区
- 徐汇区
- 长宁区
- 浦东新区
```
这就是一个简单的县级市递归的树形结构的Java 8代码实现。
阅读全文