热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jstreejava_javajsTree通用的树生成代码

publicclassTools{publicstaticvoidmain(String[]args){测试用例TreeNodeskeysnewTreeNodes(ptId,

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 &#61;&#61; null || list.size() <&#61; 0) {

return new ArrayList<>();

}

String jsonStr &#61; JSON.toJSONString(list);

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

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

Map> map &#61; new HashMap<>();//change&#xff0c;修改List为指定的类型

//转换字段

List root &#61; null;//根目录 //change&#xff0c;修改List为指定的类型

for (TreeNodes current : treeNodes) {//change&#xff0c;修改List为指定的类型

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

String level &#61; current.getLevel();//change&#xff0c;修改获取层级的方法

if (!map.containsKey(level)) {//不存在&#xff0c;先添加list

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

}

List arr &#61; map.get(level);//当前层级//change&#xff0c;修改List为指定的类型

arr.add(current);

if (root &#61;&#61; null) {//表示是第一级

root &#61; arr;

}

}

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

{

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

if (parentTree &#61;&#61; null) {

continue;

}

for (TreeNodes parent : parentTree) {//change&#xff0c;修改List为指定的类型

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

parent.getChildren().add(current);

break;

}

}

}

}

return root;

}

/** * 更新字段 */

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

if (StringUtils.isEmpty(json) || keys &#61;&#61; null) {

return "";

}

json &#61; json.replaceAll(keys.getId(), "id")

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

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

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

return json;

}

/** * 将一个对象的列表转换为另一个对象的列表 * * &#64;param k * &#64;param clazz * &#64;param * &#64;param * &#64;return */

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

List list &#61; JSONArray.parseArray((JSONArray.toJSON(k)).toString(), clazz);

return list;

}

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

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

List list &#61; JSONArray.parseArray(str, clazz);

return list;

}

}



推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 标题: ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
author-avatar
品花人生1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有