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

}

}



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
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社区 版权所有