特殊字符解析为树-进阶

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

 

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值