`
zengshaotao
  • 浏览: 777995 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

特殊字符解析为树-进阶

 
阅读更多

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());

 

}

}

 

分享到:
评论

相关推荐

    JVM性能优化相关问题-面试-进阶

    - **解析**:将符号引用转换为直接引用,但不一定要在初始化前完成。 - **初始化**:执行类中定义的Java代码,包括静态变量的赋值和静态代码块的执行。 - **使用**:类被使用和调用。 - **卸载**:当类不再需要...

    嵌入式C语言培训-编程进阶-2字符串

    在嵌入式系统开发中,C语言是一种广泛使用的编程语言,尤其...通过学习“嵌入式C语言培训-编程进阶-2字符串”这部分内容,开发者可以深入理解C语言字符串的特性和操作方法,为编写高效、安全的嵌入式代码打下坚实基础。

    5-java进阶-枚举与注解1

    每个常量都有两个字符串参数。 枚举的特点 枚举有以下几个特点: * 枚举是一种特殊的类,它继承自 java.lang.Enum 类。 * 枚举中的常量是public、static、final 的。 * 枚举可以使用toString()方法来获取枚举的...

    02-java语言进阶源码

    【Java语言进阶源码解析】 Java是一种广泛使用的高级编程语言,以其跨平台性、安全性以及面向对象的特点深受开发者喜爱。本资料集“02-java语言进阶源码”涵盖了多个关键主题,旨在帮助开发者深入理解Java的核心...

    sql高级进阶

    这些知识点构成了SQL高级进阶学习的完整体系,覆盖了数据查询、数据处理、多表操作、字符串和数值处理、日期时间函数、报表和数据仓库分析、以及分层查询等多个领域,为数据库管理和数据分析提供了全面的工具和方法...

    王牌资源\王牌2 学习成果检测——【练一练】答案.pdf

    - 字符类型转换为整型。 - 整型转换为浮点型。 - 如果操作数之一为`double`,另一个也将被提升为`double`。 - 布尔类型不能转换为其他类型。 #### 第7章 改变程序执行方向——程序控制结构 - **填空题解析** ...

    xml初学进阶xml初学进阶xml初学进阶xml初学进阶

    [CDATA[不受解析的文本]]&gt;`用于包含特殊字符,不进行解析。 三、XML命名规则 1. 名称区分大小写。 2. 名称不能以数字开头。 3. 名称中不能包含空格或特定字符(如":"、"?"、"&"等)。 4. 名称不能与XML的保留关键字...

    正则表达式PHPChina PHP进阶学习

    正则表达式由一系列字符和特殊符号组成,用于定义一个模式,这个模式可以匹配一系列相似的字符串。例如,“\d+”是一个简单的正则表达式,它表示匹配一个或多个数字。在PHP中,我们通常使用`preg_match()`、`preg_...

    c语言从入门到进阶笔记

    本笔记将带你逐步深入C语言的世界,从基础知识到高级概念,全方位解析C语言的核心。 1. **C语言程序编写环境** - **Visual Studio 2019**:是Microsoft提供的一个集成开发环境(IDE),支持多种编程语言,包括...

    oracle高手进阶

    ### Oracle高手进阶知识点解析 #### 一、Oracle基础设置与数据展示格式调整 在进行Oracle操作时,首先需要对查询结果的展示格式进行一定的设置,这样可以使得数据更加直观和易于阅读。以下是一些基本的命令: 1. *...

    matlab数组字符串-聚合字符串 算法开发、数据可视化、数据分析以及数值计算 Matlab课程 教程 进阶 资源

    数组字符串在MATLAB中是一种特殊类型的数据结构,它能够存储一个或多个字符串。每个元素都是一个独立的字符串,可以方便地进行各种字符串操作。在处理文本数据时,数组字符串非常实用,比如读取和写入文件、解析CSV...

    xml初学进阶

    - 元素和属性名必须遵循一定的命名规则,如首字符不能为数字,不能包含空格和某些特殊字符等。 - 名称区分大小写,`&lt;MyElement&gt;`不同于`&lt;myelement&gt;`。 4. **文档类型定义(DTD)与XML Schema** - **DTD**:定义...

    数据结构与算法java进阶(百度T5推荐)

    以上是对《数据结构与算法java进阶》所涉及知识点的详细解析,涵盖了Java基础知识、数据结构与算法的基础概念、具体实现以及高级应用等方面。这些内容不仅适合初学者入门,也适合有一定基础的开发者进一步提升自己的...

    yaml配置文件解析-yaml

    但如果字符串中包含特殊字符或者需要区分空格,则需要使用双引号或单引号。 以下是一些关于YAML的基本操作和示例: ### 1. YAML配置文件的创建和读取 #### (1) 安装YAML库 对于Python,可以使用`pip3 install ...

    java进阶知识

    在处理中文等特殊字符时,为了防止乱码问题出现,需要正确设置页面编码。 - **通过Servlet设置编码**: - 使用 `response.setContentType("text/html;charset=utf-8")` 设置响应内容类型及编码。 - 在HTML头部...

    嵌入式LINUX内核驱动进阶班实验手册_实验3.1

    ### 嵌入式Linux内核驱动进阶班实验手册之实验3.1解析 #### 实验背景与目的 在嵌入式系统开发过程中,掌握Linux内核驱动开发技术至关重要。本实验手册针对有一定基础的开发者,旨在通过一系列实践操作加深对Linux...

    XML初学进阶.rar

    - 标签名、属性名必须遵循严格的命名规则,如不能以数字开头,不能包含空格或某些特殊字符。 - 名称区分大小写,如`&lt;myTag&gt;`和`&lt;mytag&gt;`是不同的。 4. **XML文档类型定义(DTD)** - DTD用于定义XML文档的结构和...

    XML 初学进阶,HTM格式

    4. **命名规则**:XML元素、属性和命名空间的名称遵循特定的规则,如不能以数字开头,不能包含空格或特殊字符等。 5. **DTD(Document Type Definition)与XSD(XML Schema)**:这些是XML文档的验证工具,用来定义...

    xml的入门经典 XML初学进阶

    5. **命名规则**:XML的标签名是大小写敏感的,并且必须遵循一定的命名规则,例如不能以数字开头,不能包含特殊字符等。 ### XML解析 1. **解析器**:XML解析器负责读取XML文档并转换为可操作的数据结构。解析器...

Global site tag (gtag.js) - Google Analytics