还是目录树的问题!~表结构如下:
 id        publishsort            sortname
 1          Q                     生物科学
 2          Q1                   普通生物学
 3          Q12                   生物光学
 4          R                     医学卫生
 5          R-01                  草药学
 6          R-012                 中草药
表结构不能改!~Q的子集是Q1,然后Q1的子集是Q12。。如此来创建目录树。现在己把数据取出放在list里面!如何用java来做数据处理!生成目录树!大侠们帮帮忙哈!

解决方案 »

  1.   

    表结构类有三个属性域,1:序列,2:目录,3:名称
    1用int就可以了,用来标识在list中的位置
    2用String,第一个字符标识其根目录,第二个标识次根目录...
    3用String
    每次从list中去元素时,去扫描目录String,然后判断应该放到那个层次中
    如:扫描到Q字符就将Q对象入栈,然后再扫描第二个,入栈...
    到最后一个字符时,让栈中对象逐个出栈,逐级添加
      

  2.   

    import java.util.*;public class Sort { public static void main(String[] args) { try { Vector datas = new Vector();
    // 假设数据已排序
    datas.add(new Depart(1, "Q", "生物科学"));
    datas.add(new Depart(2, "Q1", "普通生物学"));
    datas.add(new Depart(3, "Q12", "生物光学"));
    datas.add(new Depart(33, "Q13", "计划生育"));
    datas.add(new Depart(4, "R", "医学卫生"));
    datas.add(new Depart(5, "R-01", "草药学"));
    datas.add(new Depart(6, "R-012", "中草药")); int len = datas.size();

    String up = ""; // parent
    String last = ""; // brother
    int tier = -1; // 层数 for (int i=0; i<len; i++) {
    Depart current = (Depart)datas.get(i);
    if (current.pub.indexOf(last)>=0) {
    // 新一层
    up = last;
    last = current.pub;
    tier++;
    } else {
    if (current.pub.indexOf(up)>=0) {
    // 同一层
    last = current.pub;
    } else {
    //新根结点
    up = "";
    last = current.pub;
    tier = 0;
    }
    }
    print__(tier);
    System.out.println(current.name);

    }
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            } } static void print__(int tier) {
    if (tier <= 0) {
    return;
    }
    System.out.print("|");
    for (int i=0; i<tier; i++) {
    System.out.print("--");
    }
    }
    }class Depart {
    int id = 0;
    String pub = "";
    String name = "";
    Depart(int id, String pub, String name) {
    this.id = id;
    this.pub = pub;
    this.name = name;
    }

    }