package function;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//条线上有相同name节点的都没有问题
public class CopyOfGetGroupInfo {
public static void main(String args[]){
String s1 = "业务信息#机构业务";
String s2 = "业务信息#旅行业务";
String s3 = "客户信息#核心客户#对公客户";
String s4 = "客户信息#核心客户#对私客户";
String s5 = "客户信息#理财客户#对公客户";
String s6 = "客户信息#理财客户#对私客户";
//String s5 = "客户信息#理财客户#长期客户";
//String s6 = "客户信息#理财客户#短期客户";
String s7 = "客户信息#信贷客户";
List l = new ArrayList();
l.add(s1);
l.add(s2);
l.add(s3);
l.add(s4);
l.add(s5);
l.add(s6);
l.add(s7);
int groupId=10000;
String currDealStr = "";
//叶子节点可能存在重复
//存储单纯的节点name信息
List<String> nodeCon =new ArrayList<String>();
List<String> nodeRelas =new ArrayList<String>();
for(int i = 0;i<l.size();i++){
currDealStr = (String)l.get(i);
String nodeStrArr[] = currDealStr.split("#");
//每一条记录里的节点信息
for(int j =0;j<nodeStrArr.length;j++){
String nodeName = "";
//末节点的名称,包含了整个树枝上所有的节点
for(int k=0; k<=j ; k++){
nodeName = nodeName+nodeStrArr[k]+"#";
}
//截取字符最后的#
nodeName = nodeName.substring(0,nodeName.lastIndexOf("#"));
System.out.println("nodeName:"+nodeName);
String nodeRela = "";
if(j==0){
//第一层评分组,评分组的上级肯定是评分卡
if(nodeCon.contains(nodeName)){
System.out.println("exist");
//break 跳出了外层循环,不符合逻辑
continue;
}else{
System.out.println("first level not exist,add ");
nodeRela = (groupId++)+"@"+nodeName+"@card_root";
nodeCon.add(nodeName);
nodeRelas.add(nodeRela);
}
}else{
String currPar = "";
if(nodeCon.contains(nodeName)){
System.out.println("exist");
//break 跳出了外层循环,不符合逻辑
continue;
}else{
System.out.println("not exist,add");
//找到当前节点的父节点
nodeCon.add(nodeName);
currPar = nodeName.substring(0,nodeName.lastIndexOf("#"));
//找到当前节点的父节点的id信息
String parId= "";
Iterator it = nodeRelas.iterator();
String nodeSplit[] = null;
while(it.hasNext()){
String node = (String)it.next();
nodeSplit = node.split("@");
if(nodeSplit[1].equals(currPar)){
parId = nodeSplit[0];
break;
}
}
//String realName = nodeName.substring(nodeName.lastIndexOf("#"));
nodeRelas.add((groupId++)+"@"+nodeName+"@"+parId);
}
}
}
}
System.out.println("******************************************");
Iterator itn = nodeCon.iterator();
while(itn.hasNext()){
String node = (String)itn.next();
System.out.println(node);
}
System.out.println("******************************************");
System.out.println("******************************************");
Iterator it = nodeRelas.iterator();
while(it.hasNext()){
String node = (String)it.next();
System.out.println(node);
}
System.out.println("******************************************");
System.out.println("size:"+nodeRelas.size());
}
}
相关推荐
- **解析**:将符号引用转换为直接引用,但不一定要在初始化前完成。 - **初始化**:执行类中定义的Java代码,包括静态变量的赋值和静态代码块的执行。 - **使用**:类被使用和调用。 - **卸载**:当类不再需要...
在嵌入式系统开发中,C语言是一种广泛使用的编程语言,尤其...通过学习“嵌入式C语言培训-编程进阶-2字符串”这部分内容,开发者可以深入理解C语言字符串的特性和操作方法,为编写高效、安全的嵌入式代码打下坚实基础。
每个常量都有两个字符串参数。 枚举的特点 枚举有以下几个特点: * 枚举是一种特殊的类,它继承自 java.lang.Enum 类。 * 枚举中的常量是public、static、final 的。 * 枚举可以使用toString()方法来获取枚举的...
【Java语言进阶源码解析】 Java是一种广泛使用的高级编程语言,以其跨平台性、安全性以及面向对象的特点深受开发者喜爱。本资料集“02-java语言进阶源码”涵盖了多个关键主题,旨在帮助开发者深入理解Java的核心...
这些知识点构成了SQL高级进阶学习的完整体系,覆盖了数据查询、数据处理、多表操作、字符串和数值处理、日期时间函数、报表和数据仓库分析、以及分层查询等多个领域,为数据库管理和数据分析提供了全面的工具和方法...
正则表达式由一系列字符和特殊符号组成,用于定义一个模式,这个模式可以匹配一系列相似的字符串。例如,“\d+”是一个简单的正则表达式,它表示匹配一个或多个数字。在PHP中,我们通常使用`preg_match()`、`preg_...
本笔记将带你逐步深入C语言的世界,从基础知识到高级概念,全方位解析C语言的核心。 1. **C语言程序编写环境** - **Visual Studio 2019**:是Microsoft提供的一个集成开发环境(IDE),支持多种编程语言,包括...
### Oracle高手进阶知识点解析 #### 一、Oracle基础设置与数据展示格式调整 在进行Oracle操作时,首先需要对查询结果的展示格式进行一定的设置,这样可以使得数据更加直观和易于阅读。以下是一些基本的命令: 1. *...
数组字符串在MATLAB中是一种特殊类型的数据结构,它能够存储一个或多个字符串。每个元素都是一个独立的字符串,可以方便地进行各种字符串操作。在处理文本数据时,数组字符串非常实用,比如读取和写入文件、解析CSV...
但如果字符串中包含特殊字符或者需要区分空格,则需要使用双引号或单引号。 以下是一些关于YAML的基本操作和示例: ### 1. YAML配置文件的创建和读取 #### (1) 安装YAML库 对于Python,可以使用`pip3 install ...
- 元素和属性名必须遵循一定的命名规则,如首字符不能为数字,不能包含空格和某些特殊字符等。 - 名称区分大小写,`<MyElement>`不同于`<myelement>`。 4. **文档类型定义(DTD)与XML Schema** - **DTD**:定义...
以上是对《数据结构与算法java进阶》所涉及知识点的详细解析,涵盖了Java基础知识、数据结构与算法的基础概念、具体实现以及高级应用等方面。这些内容不仅适合初学者入门,也适合有一定基础的开发者进一步提升自己的...
在处理中文等特殊字符时,为了防止乱码问题出现,需要正确设置页面编码。 - **通过Servlet设置编码**: - 使用 `response.setContentType("text/html;charset=utf-8")` 设置响应内容类型及编码。 - 在HTML头部...
### 嵌入式Linux内核驱动进阶班实验手册之实验3.1解析 #### 实验背景与目的 在嵌入式系统开发过程中,掌握Linux内核驱动开发技术至关重要。本实验手册针对有一定基础的开发者,旨在通过一系列实践操作加深对Linux...
- 标签名、属性名必须遵循严格的命名规则,如不能以数字开头,不能包含空格或某些特殊字符。 - 名称区分大小写,如`<myTag>`和`<mytag>`是不同的。 4. **XML文档类型定义(DTD)** - DTD用于定义XML文档的结构和...
4. **命名规则**:XML元素、属性和命名空间的名称遵循特定的规则,如不能以数字开头,不能包含空格或特殊字符等。 5. **DTD(Document Type Definition)与XSD(XML Schema)**:这些是XML文档的验证工具,用来定义...
5. **命名规则**:XML的标签名是大小写敏感的,并且必须遵循一定的命名规则,例如不能以数字开头,不能包含特殊字符等。 ### XML解析 1. **解析器**:XML解析器负责读取XML文档并转换为可操作的数据结构。解析器...
本篇文档针对Perl语言进阶学习进行系统性的总结与解析。Perl作为一种功能强大且灵活性极高的脚本语言,在多个领域都有着广泛的应用,尤其是在系统管理、网络编程以及文本处理等方面。以下将根据文档提供的章节结构对...