我想将列表数据转换为层次结构。寻找示例代码。
Class State{
String stateName;
List<County> counties;
}
Class County{
String countyName;
List<Town> towns;
}
Class Town{
String townName;
List<House> houses;
}
Class House{
String streetName;
String houseNo;
}
数据位于文件或数据库结果集中
State, County, Town, House
NY , Cook, Main, 123
NY , Cook, Madison, 456
NY , Hudson, River Rd, 123
NY , Hudosn, River Rd, 456
NY , Hudosn, River Rd, 789
我认为国家是独一无二的,因为我在claouse的地方。 结果将是一个国家实例。
到目前为止,我已经尝试过了。我知道它完全错了,必须要使用某种递归,但我总是感到困惑。
for (Address addrs:resultList) {
state.setStateName(addrs.getStateName());
county = new County();
county.setLoc(addrs.getCountyName);
townList = new ArrayList<Town>();
town = new Town();
town.setTownName(addrs.getTownName());
houseList = new ArrayList<House>();
House house = new House();
house.sethouse(addrs.getStreetName());
house.setStatus(addrs.getHouseNo());
houseList.add(house);
town.sethouses(houseList);
townList.add(town);
loc.setConEntities(townList);
locations.add(loc);
}
state.toJason() .....
答案 0 :(得分:0)
试着像这样思考;每一行都有从层次结构的顶部到底部的信息。不是为每一行创建一个新的County,Town等实例,而应该检查该对象是否已经存在,只有在它存在时才更新它。例如,在第一行,该县是库克。由于层次结构不包含该县,因此我们创建County的实例并将其保存到层次结构中。当我们在下一行中包含Cook时,我们可以从层次结构中检索该对象并使用Town和house更新它。这种方法显然也适用于城镇(在您的示例中)。考虑使用Map