有个csv文件,内容为级联关系,有个根节点A,文件部署如下,一共2列
A,B(B为A的下级)
A,C(C为A的下级)
B,D(D为B的下级)
E,F(F为E的下级)
B,G(G为B的下级)
...各行无顺序,根节点为A,我要如何将文件内容生成以A为根节点的树
A,B(B为A的下级)
A,C(C为A的下级)
B,D(D为B的下级)
E,F(F为E的下级)
B,G(G为B的下级)
...各行无顺序,根节点为A,我要如何将文件内容生成以A为根节点的树
问题是布置的题目是csv格式啊,难道生成树时候要转换成xml?求详解...
试着先按每行的第一列真理, 也就是说将第一列都是A的归一类, 都是B的归一类等等, 然后将它们综合起来做一个索引. 从根节点A开始, 对于每一个需要处理的结点, 先查看索引找出它的所有子节点. 接着就处理每一个子节点, 方法是同样的, 也就是说生成以子节点为根的树, 将子节点与父节点连接起来就行了. 这样一个一个处理完所有的子节点. 注意这个方法是递归的.
不知道我是不是表述清楚了. 如果没清楚再回复我吧.
private static void putData(String pid,String id)
{
ArrayList<String> childList=tmpMap.get(pid);
if(childList==null)
{
childList=new ArrayList<String>();
tmpMap.put(pid, childList);
}
childList.add(id);
}
private static void makeTree(String pid,int level)
{
System.out.println("level:"+level+","+pid);
ArrayList<String> childList=tmpMap.get(pid);
if(childList!=null)
{
for(int i=0;i<childList.size();i++)
{
makeTree(childList.get(i),level+1);
}
}
}
public static void main(String[] args) {
putData("A","B");
putData("A","C");
putData("B","D");
putData("B","G");
System.out.println(tmpMap.toString());
makeTree("A",1); }