有如下结构的数据,写一个循环,输出此数据的树形结构定义。ID  PARENT_ID  NAME
-------------------
1      0         A
2      1         B
3      1         C
4      2         D
5      3         E
6      5         F
7      0         G
8      7         H
9      3         I
效果如下:
1-----------A
-------2-----------B
--------------4-----------D
-------3-----------C
-------------- 5-----------E
---------------------6-----------F
--------------9-----------I
7-----------G
-------8-----------H

解决方案 »

  1.   

    要求是在Eclipse里用String[][]二维数组放进去,然后遍历出来,效果要和下面的一样,十万火急啊,突然不知道如何下手了,帮帮忙啊大家
      

  2.   

    试参考如下:public static void main(String[] args) {
    String[] names = new String[] { "A", "B", "C", "D", "E", "F", "G", "H",
    "I" };
    int[][] pairs = new int[][] { { 1, 0 }, { 2, 1 }, { 3, 1 }, { 4, 2 },
    { 5, 3 }, { 6, 5 }, { 7, 0 }, { 8, 7 }, { 9, 3 } };
    String line = "-------";
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < pairs.length; i++) {
    sb.delete(0, sb.length());
    for (int j2 = 0; j2 < pairs[i][1]; j2++) {
    sb.append("-");
    }
    sb.append(pairs[i][0]);
    sb.append(line);
    sb.append(names[i]);
    System.out.println(sb.toString());
    }
    }
      

  3.   

    刚才那个似乎不是你要的,这个应该是:public static void main(String[] args) {
    Map<String, String> parms = new HashMap<String, String>();
    String[] names = new String[] { "A", "B", "C", "D", "E", "F", "G", "H",
    "I" };
    int[][] pairs = new int[][] { { 1, 0 }, { 2, 1 }, { 3, 1 }, { 4, 2 },
    { 5, 3 }, { 6, 5 }, { 7, 0 }, { 8, 7 }, { 9, 3 } };
    String line = "-------";
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < pairs.length; i++) {
    sb.delete(0, sb.length());
    String str = parms.get(pairs[i][1] + "") == null ? "" : parms
    .get(pairs[i][1] + "");
    sb.append(str);
    sb.append(pairs[i][0]);
    sb.append(line);
    sb.append(names[i]);
    parms.put(pairs[i][0] + "", str + line);
    System.out.println(sb.toString());
    }
    }打印效果如下:
    1-------A
    -------2-------B
    -------3-------C
    --------------4-------D
    --------------5-------E
    ---------------------6-------F
    7-------G
    -------8-------H
    --------------9-------I
      

  4.   

    用递归吧  static List<String[]>  list=new ArrayList<String[]>();
    static {
    list.add(new String[]{"1","0","A"});
    list.add(new String[]{"2","1","B"});
    list.add(new String[]{"3","1","C"});
    list.add(new String[]{"4","2","D"});
    list.add(new String[]{"5","3","E"});
    list.add(new String[]{"6","5","F"});
    list.add(new String[]{"7","0","G"});
    list.add(new String[]{"8","7","H"});
    list.add(new String[]{"9","3","I"});
    }
    public static void test(String n,int lvl){
    String p="";
    for(int i=1;i<lvl;i++){
    p+="---";
    }
    for(String[] d:list){
    if(d[1].equals(n)){
    System.out.println(p+d[0]+"--"+d[2]);
    test(d[0],(lvl+1));
    }
    }
    }
    public static void main(String[] args) {
    test("0",1);
    }
    效率低下 
      

  5.   

    一下子给你说不清。 这种东西做的多了   用数据库查询 或者 java数组 都可以的。
      

  6.   

    呵呵,8L高手啊,完全正确,貌似还有一种用List和Map组合也能做的方法,我等会试试
      

  7.   

    7楼的看起来貌似没问题,但没有把ID和Parent_id关联起来,所以结果不一样,只是显示的样式一样
      

  8.   

    id 和 parentid组成了tree结构,字母是value,图形是按层次显示的应该。只要打出了id和parentid的层次结构,再打出值就可以了
      

  9.   

    怎么用list和map打印出这个树状结构啊,list把每行用一维数组存进去,map存放主键,最后通过传递主键找到相应的id,最后循环打印结果!试题要求是这样的,麻烦大家再帮帮忙!
      

  10.   

    怎么用list和map打印出这个树状结构啊,list把每行用一维数组存进去,map存放主键,最后通过传递主键找到相应的id,最后循环打印结果!试题要求是这样的,麻烦大家再帮帮忙!
      

  11.   

    你不是说用String[][]里做么.....为什么又可以用LIST了
      

  12.   

    呵呵,这个答案确实很对,但考试的时候考官提示了一下,说的是:用list和map打印出这个树状结构,list把每行用一维数组存进去,map存放主键,最后通过传递主键找到相应的层级,最后循环打印结果!试题要求是这样的!不知道可以实现不?