热门标签 | 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;

}

}



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • IneedtofocusTextCellsonebyoneviaabuttonclick.ItriedlistView.ScrollTo.我需要通过点击按钮逐个关注Tex ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
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社区 版权所有