2014-09-11 63 views
1

的存储字符串值下图显示了如何需要我的数据存储和相互链接:有四个级别层次

值V1,V2等都是独一无二的。对于不同的v1 ... n,Av1 ... n和n1 .... n对应应该是相同的。一旦存储,我需要检索它在以下格式:

V1,Av1,n1 
V1,Av1.n2 
. 
. 
. 
. 
v4,Av1,n1 

你如何建议我这样做?

+0

我想你可以使用xml – 2014-09-11 11:42:33

回答

0

使用树类来存储树的名称及其子。然后遍历一个递归逻辑并打印出来。

import java.util.ArrayList; 
import java.util.List; 

class Tree{ 
    private List<Tree> childTree; 
    private String name; 

    public Tree(String name) { 
     this.name = name; 
    } 

    public List<Tree> getChildTree() { 
     return childTree; 
    } 

    public void setChildTree(List<Tree> childTree) { 
     this.childTree = childTree; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

public class TestDrive { 

    public static void main(String arr[]){ 

     //Storing the values 
     Tree a1 = new Tree("A1"); 

     Tree v1 = new Tree("v1"); 
     Tree v2 = new Tree("v2"); 

     List<Tree> a1Child = new ArrayList<Tree>(); 
     a1Child.add(v1); 
     a1Child.add(v2); 

     a1.setChildTree(a1Child); 

     Tree av1 = new Tree("av1"); 
     Tree av2 = new Tree("av2"); 

     List<Tree> v1Child = new ArrayList<Tree>(); 
     v1Child.add(av1); 
     v1Child.add(av2); 

     v1.setChildTree(v1Child); 

     Tree n1 = new Tree("n1"); 
     Tree n2 = new Tree("n2"); 

     List<Tree> av1Child = new ArrayList<Tree>(); 
     av1Child.add(n1); 
     av1Child.add(n2); 

     av1.setChildTree(av1Child); 

     Tree n11 = new Tree("n1"); 
     Tree n22 = new Tree("n2"); 
     List<Tree> av2Child = new ArrayList<Tree>(); 
     av2Child.add(n11); 
     av2Child.add(n22); 

     av2.setChildTree(av2Child); 

     //Retrieving the values 

     printValue(a1,""); 

    } 

    private static void printValue(Tree tree,String treeName) { 
     treeName = treeName+" : "+tree.getName(); 

     if(tree.getChildTree()!=null){ 
      List<Tree> childTreeList = tree.getChildTree(); 
      for (Tree childTree : childTreeList) { 
       printValue(childTree,treeName); 
      } 
     }else{ 
      System.out.println(treeName); 
     } 
    } 

} 
+0

这对于打印这些值的工作,它来完美。我必须将这4个值的每一行传递给所有组合的sql查询,以查找它是否存在于数据库中。我该怎么做?(真的很新)。 – Leocode 2014-09-11 14:24:39

+0

@Leocode要执行选择查询,您需要查找树节点的组合。递归参数'treeName'在这里是关键,因为它拥有组合。我用':'来组合树名。你可以通过在我打印它的地方分割'treeName'来实现你的需求'(System.out.println(treeName);)'和数据库交谈。除了'String'参数外,你还可以传递'ArrayList '并对其进行处理。有很多方法可以解决这个问题,这只是一个想法,希望它有助于:) – vjy 2014-09-12 05:08:36

+0

我不知道这是否是最好的答案或最佳的解决方案,但我接受它,因为它对我来说真的很好。非常感谢。 – Leocode 2014-09-12 11:14:03