有类似如下的结构,有A1,A2,A2...。A1下一级有B1,B2,B3..。B1下面有C1,C2等。。
怎么定义几个类和ArrayList,把这种结构的数据存储到ArrayList中。
再去把ArrayList中按照如上结构存储的数据读出来.
有类似如下的结构,有A1,A2,A2...。A1下一级有B1,B2,B3..。B1下面有C1,C2等。。
怎么定义几个类和ArrayList,把这种结构的数据存储到ArrayList中。
再去把ArrayList中按照如上结构存储的数据读出来.
这种多层次的结构建议你用树形结构进行存储。定义的实体类只需要两个,并且所有数据也可以保存在数据库的一张表里,下面给你举个简单的例子:
假如说你的实体为Menu,定义一个实体类:
public class Menu {
/**
* 主键ID。
*/
private String id;
/**
* 名称。
*/
private String name;
/**
* 父ID。
*/
private String parentId;// 父ID
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
}
再定义一个树形实体,代码如下:
public class Tree<T> {
/**
* 节点ID。
*/
private String id;
/**
* 显示节点名称。
*/
private String name;
/**
* 节点的子节点。
*/
private List<Tree<T>> child = new ArrayList<>();
/**
* 父ID。
*/
private String parentId;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Tree<T>> getChild() {
return child;
}
public void setChild(List<Tree<T>> child) {
this.child = child;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
/**
* 声明。
*
* @param id 参数
* @param name 参数
* @param child 参数
* @param parentId 参数
*/
public Tree(String id, String name, List<Tree<T>> child, String parentId) {
super();
this.id = id;
this.name = name;
this.child = child;
this.parentId = parentId;
}
public Tree() {
super();
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
数据中的数据存储如下:
下面将数据库中的数据查出,并转化为树形菜单,首先将menu表中所有的数据查出来放到List
menu中(这步不做过多叙述),然后 private static List<Menu> getMenuTree(List<Menu> menu) {
List<Tree<Menu>> trees = new ArrayList<>();
for (Menu m : menu) {
Tree<Menu> tree = new Tree<>();
tree.setId(m.getId());
tree.setParentId(m.getParentId());
tree.setName(m.getName());
trees.add(tree);
}
List<Tree<Menu>> t = BuildTree.buildList(trees, "");
return t;
}