java构建树用的Node
package org.ccnt.med.body; import java.util.ArrayList;
import java.util.List; public class Node { // 叶子节点
public final static String TYPE_LEAF = "leaf"; // 有子节点的节点
public final static String TYPE_NODE = "node"; // 节点键值
private String org_code; // 节点名称
private String org_name; // 节点状态
private String status; // 节点类型
private String org_type; // 父节点值
private String parent_code; // 子节点数组
private Node[] childNodes; /**
* 转换列表为数组
*
* @param NodeList
* @return
*/
public static Node[] listToArray(List<Node> NodeList) {
Node[] nodes = null;
if (NodeList != null) {
nodes = new Node[NodeList.size()];
for (int i = 0; i < NodeList.size(); i++) {
nodes[i] = (Node) NodeList.get(i);
}
}
return nodes;
} /**
* 判断是否是有子节点的节点
*
* @return
*/
public boolean isNode() {
if (this.getChildNodes() != null && this.getChildNodes().length > 0) {
return true;
} else {
return false;
}
} /**
* 判断是否是叶子节点
*
* @return
*/
public boolean isLeaf() {
return !isNode();
} /**
* 根据列表设置当前节点的子节点
*/
public void filterChildNodes(Node[] nodes) {
List<Node> list = new ArrayList<Node>();
Node tempNode = new Node();
for (int i = 0; i < nodes.length; i++) {
tempNode = nodes[i];
if ("root".equals(tempNode.getParent_code())
&& this.getOrg_code() == null) {
list.add(tempNode);
} else {
if (!"root".equals(tempNode.getParent_code())
&& this.getOrg_code() != null) {
if (tempNode.getParent_code().equals(this.getOrg_code())) {
list.add(tempNode);
}
}
}
} this.setChildNodes(listToArray(list));
} public String getOrg_code() {
return org_code;
} public void setOrg_code(String org_code) {
this.org_code = org_code;
} public String getOrg_name() {
return org_name;
} public void setOrg_name(String org_name) {
this.org_name = org_name;
} public String getStatus() {
return status;
} public void setStatus(String status) {
this.status = status;
} public String getOrg_type() {
return org_type;
} public void setOrg_type(String org_type) {
this.org_type = org_type;
} public String getParent_code() {
return parent_code;
} public void setParent_code(String parent_code) {
this.parent_code = parent_code;
} public Node[] getChildNodes() {
return childNodes;
} public void setChildNodes(Node[] childNodes) {
this.childNodes = childNodes;
} public static String getTYPE_LEAF() {
return TYPE_LEAF;
} public static String getTYPE_NODE() {
return TYPE_NODE;
}
}
java构建树用的Node的更多相关文章
- java实现树的一般操作
https://www.cnblogs.com/dawnyxl/p/9047437.html 树是数据结构中最基本的结构,今天的博客更新一下树的基本操作: 树的节点结构: package tree; ...
- t-io Java构建p2p网络
Java 构建p2p网络 这篇文章是一篇关于pbft算法实现的一篇补充文章,但是在这里不会涉及pbft的算法方面,所以可以当做一篇单独的文章食用.如果想查看关于区块链或者PBFT算法的文章,可以参考一 ...
- java遍历树(深度遍历和广度遍历
java遍历树如现有以下一颗树:A B B1 B11 B2 B22 C C ...
- Java Build Path(Java 构建路径)
Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通过使用 Java 项目属性对话框中的 Java Build P ...
- Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代 ...
- java集合树状结构及源码
java集合树状结构及源码 最近一直想看一下java集合的源码,毕竟平时用的比较多,但总是感觉是跟着习惯new出来一个对象,比如ArrayList,HashMap等等,所以就简单的看了一下,了解了一下 ...
- 闽江学院软件学院2016级JAVA构建之法-学生自学兴趣小组招募通知
为提升我2016级学生提升JAVA软件开发学习氛围,鼓励更多同学通过自学.团队学习.在线(社区)学习等方式学习并掌握JAVA课程,尤其是鼓励同学们通过微软中国邹欣老师所倡导的"构建之法&qu ...
- 004_Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它 们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建 ...
- Eclipse Java 构建路径
Eclipse Java 构建路径 设置 Java 构建路径 Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通 ...
随机推荐
- 一、SDWebImage分析--库处理流程分析
二.SDWebImage分析--源码具体分析 这阵子看了SDWebImage的实现跟源代码.也看了下网上的一些总结. 这里我自己画了个流程图来辅助理解下SDWebImage这个库的实现流程.相信也是有 ...
- Ubuntu 14.04 设置Android开发环境
准备Java环境 本文仅仅安装sdk,不安装什么IDE,由于我仅仅须要命令行模式开发就可以. 首先安装openjdk 1.6.然后安装ant.这个不赘述. 下载SDK 从这里下载SDK for Lin ...
- Mysql课后思考题
1.请简述数据库.表和数据库服务器之间的关系? 知识点数据库存储结构 一个数据库服务器可以管理多个数据库,通常情况下开发人员会针对每个应用创建一个数据库,为保存应用中实体的数据,会在数据库中创建多个表 ...
- Extjs学习笔记--(三,调试技巧)
FireFox 1.firedebug(略) 2.illuminations 在illuminations页面可也看到缩写的extjs的代码,同时可以进行相应的调试 3,Firedebug AutoC ...
- 【RF库Collections测试】Insert Into List
Name:Insert Into ListSource:Collections <test library>Arguments:[ list_ | index | value ]Inser ...
- ios UIButton得 几种触发方式
在控件事件中,简单解释下下面几个事件.说明:由于是在“iOS 模拟器”中测试的,所以不能用手指,只能用鼠标.1)UIControlEventTouchDown指鼠标左键按下(注:只是“按下”)的动作2 ...
- 《C++ Primer Plus》12.7 队列模拟 学习笔记
Heather银行打算在Food Heap超市开设一个自动柜员机(ATM).Food Heap超市的管理者担心排队使用ATM的人流会干扰超市的交通,希望限制排队等待的人数.Heather银行希望对顾客 ...
- linux的setup命令设置网卡和防火墙等
以前在centos上配置网卡都是纯命令行,今天发现linux原来还有一个setup那么好用的命令,真是相见恨晚,以后防火墙.网卡.其他网络配置.系统配置(开机启动项)都可用他来完成了
- <转>Logistic回归总结
转自http://blog.csdn.net/dongtingzhizi/article/details/15962797 当我第一遍看完台大的机器学习的视频的时候,我以为我理解了逻辑回归,可后来越看 ...
- 【BZOJ3156】防御准备 斜率优化
[BZOJ3156]防御准备 Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小 ...