jstree java_java-jsTree通用的树生成代码

public class Tools{

public static void main(String[] args) {//测试用例

TreeNodes keys = new TreeNodes ("ptId", "parentId", "ptName", "ptLevels");

//String str = "[{\"parentId\":\"0\",\"ptDeleted\":\"0\",\"ptId\":\"1\",\"ptLevels\":1,\"ptName\":\"类型1\"},{\"parentId\":\"0\",\"ptDeleted\":\"0\",\"ptId\":\"2\",\"ptLevels\":1,\"ptName\":\"类型2\"},{\"parentId\":\"2\",\"ptDeleted\":\"0\",\"ptId\":\"3\",\"ptLevels\":2,\"ptName\":\"类型23\"}]";

//String s1 = changeKey(str, keys);

//System.out.println(s1);

List> pts = getListMap();//模拟获取列表信息

List list = Tools.formatTree(pts,keys);//将列表转换为树

System.out.println(JSON.toJSONString(list));

}

public static List> getListMap(){

List> list = new ArrayList>();

Map map1 = new HashMap();

map1.put("ptId",1); map1.put("parentId",0); map1.put("ptLevels",1);map1.put("ptName","测试用例1");list.add(map1);

Map map2 = new HashMap();

map2.put("ptId",2); map2.put("parentId",0); map2.put("ptLevels",1);map2.put("ptName","测试用例2");list.add(map2);

Map map3 = new HashMap();

map3.put("ptId",3); map3.put("parentId",0); map3.put("ptLevels",1);map3.put("ptName","测试用例3");list.add(map3);

Map map4 = new HashMap();

map4.put("ptId",4); map4.put("parentId",1); map4.put("ptLevels",2);map4.put("ptName","测试用例4");list.add(map4);

Map map5 = new HashMap();

map5.put("ptId",5); map5.put("parentId",2); map5.put("ptLevels",2);map5.put("ptName","测试用例5");list.add(map5);

Map map6 = new HashMap();

map6.put("ptId",6); map6.put("parentId",3); map6.put("ptLevels",2);map6.put("ptName","测试用例6");list.add(map6);

Map map7 = new HashMap();

map7.put("ptId",7); map7.put("parentId",4); map7.put("ptLevels",3);map7.put("ptName","测试用例7");list.add(map7);

Map map8 = new HashMap();

map8.put("ptId",8); map8.put("parentId",5); map8.put("ptLevels",3);map8.put("ptName","测试用例8");list.add(map8);

return list;

}

/** * @param list 树的内容,需要按照level从小到大进行排序,否则无法获取到第一个层级,且易造成树的分支丢失 * @param keys * @param * @return */

public static List formatTree(List list, TreeNodes keys) {

if (list == null || list.size() <= 0) {

return new ArrayList<>();

}

String jsonStr = JSON.toJSONString(list);

jsonStr = changeKey(jsonStr, keys);//change,不改变格式,不需要这段代码,直接删除

List treeNodes = listClone(jsonStr, TreeNodes.class);//change,不改变格式,不需要这段代码,直接删除

Map> map = new HashMap<>();//change,修改List为指定的类型

//转换字段

List root = null;//根目录 //change,修改List为指定的类型

for (TreeNodes current : treeNodes) {//change,修改List为指定的类型

{//添加当前元素到指定级别

String level = current.getLevel();//change,修改获取层级的方法

if (!map.containsKey(level)) {//不存在,先添加list

map.put(level, new ArrayList());//change,修改List为指定的类型

}

List arr = map.get(level);//当前层级//change,修改List为指定的类型

arr.add(current);

if (root == null) {//表示是第一级

root = arr;

}

}

//将当前元素添加到父级的子元素列表里

{

List parentTree = map.get(String.valueOf(Integer.valueOf(current.getLevel()) - 1));//change,修改List、获取层级的方法

if (parentTree == null) {

continue;

}

for (TreeNodes parent : parentTree) {//change,修改List为指定的类型

if (parent.getId().equals(current.getpId())) {//如果找不到父级,则为异常数据,抛弃 //change,修改上下级关联的判断依据

parent.getChildren().add(current);

break;

}

}

}

}

return root;

}

/** * 更新字段 */

public static String changeKey(String json, TreeNodes keys) {

if (StringUtils.isEmpty(json) || keys == null) {

return "";

}

json = json.replaceAll(keys.getId(), "id")

.replaceAll(keys.getText(), "text")

.replaceAll(keys.getpId(), "pId")

.replaceAll(keys.getLevel(), "level");

return json;

}

/** * 将一个对象的列表转换为另一个对象的列表 * * @param k * @param clazz * @param * @param * @return */

public static List listClone(List k, Class clazz) {

List list = JSONArray.parseArray((JSONArray.toJSON(k)).toString(), clazz);

return list;

}

/** * 将json格式的字符串转换为指定对象的列表 * * @param str * @param clazz * @param * @return */

public static List listClone(String str,Class clazz){

List list = JSONArray.parseArray(str, clazz);

return list;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值