首先你要找出不重复字母的个数 确定要生成多少个list 然后把相同字母的记录放到一个list中 ...

解决方案 »

  1.   

    用两个查询分别查出DEP like 'A%'和DEP like 'B%';分别放在LIST_A,LIST_B里就好了。
      

  2.   

    肯定第一步是查出不同的开始字母,用distinct或group by都可以,然后根据前面查询出来的结果,在查询匹配的数据,加入到列表就可以了。。很简单的。select distinct(substr(dep,1,1)) as d from table_name;
    或者
    select dep from table_name where length(dep) = 1 group by dep;
    都可以找出不同的字母,最后根据查询出来的数据,like '值%',不就可以了吗?
      

  3.   

    有必要分2次查询吗?浪费粮食。用1个SQL,得到查询结果
    select substr(dep,1,1) as kind,dep as dep from TB_DEP order by dep用一个记录器记住当前处理的是哪个字母,每次循环就比较。相同,则往同一个List中加入,不相同则新建一个List,并更新记录器记住的那个字母。
      

  4.   

    小猪的狗熊说得对,你只需要分出list_A和List_B就可以了,至于List_all,你可以把A和B加起来就可以了。或者是直接一点的方法,直接用“Select Dep from TB_DEP order by Dep”就可以得到List_All的值了
    至于List_A和B的区分,可以用“Select DEP from TB_DEP where dep Like 'A%'”这样的语句得到。
    还有简单的办法,就是一下用“Select Dep from TB_DEP order by Dep”选出所有的记录,因为是按照DEP字段排序的,所以所有的A、A1、A***之类的都会排到B的前面,所以你可以在遍历查询出来的结果集的时候区分一下。
      

  5.   

    我觉得hbwhwang的办法很好,我照着实现了下,代码如下,纯属学习,^_^:
    ResultSet rs=s.executeQuery("select substring(dep,1,1) as kind,dep as dep from TB_DEP order by dep");
    while(rs.next())
    {
       if(!flag.equals(rs.getString(1)))
       {
          flag=rs.getString(1);
          map.put(flag,new ArrayList());
         ((ArrayList)map.get(flag)).add(rs.getString(2));
       }
       else
       {
          ((ArrayList)map.get(flag)).add(rs.getString(2)); 
       }
          
    }
    Set set=map.keySet();
    Iterator it=set.iterator();
    while(it.hasNext())
    {
       String str=(String)it.next(); 
       ArrayList l=(ArrayList)map.get(str);
       System.out.println(l);
    }
      

  6.   

    不好意思,TB_DEP里的值要随时添加,不如:要添加一个C,C1等等。这些值是要变化的啊。
      

  7.   

    我想要的结果是每次查询的结果LIST_ALL中有LIST_A,LIST_B,LIST_C.......!
      

  8.   

    不明白,如果楼主是想用一个list保存所有的结果的话,定义一个List list_all=new ArrayList(),
    然后在ArrayList l=(ArrayList)map.get(str)后,用list_all.add(l),把它加进去可以了,这样list_a=list_all.get(0),list_b=list_all.get(1)。
    我是这么想的,不知道楼主究竟是不是这意思。可能我没理解透楼主的意思吧。
      

  9.   

    我其实只是想把结果像这样显示出来标题a a1 a2 a3 a4 # #标题b b1 b2 # # #标题c
    写了一个程序但有错误!大家帮忙看看。
    String[] t = new String[9];
    t[0] = "a";
    t[1] = "a1";
    t[2] = "a2";
    t[3] = "a3";
    t[4] = "a4";
    t[5] = "b";
    t[6] = "b1";
    t[7] = "b2";
    t[8] = "c";
    for (int i = 0; i < t.length; i++) {

    if (i % 4 == 0) {
    System.out.println("\n");
    }
    if (t[i].length() == 1) {
    n=i;
    if ((n % 4) != 0 || t.length-n<4 ) {
    for (int j = 0; j < (3 - n % 4); j++) {
    System.out.print(" #");
    }
    }
    System.out.println("\n");
    System.out.print("标题" + t[i]);
    System.out.println("\n");
    } else {
    System.out.print(" " + t[i]);

    }
    } }
      

  10.   

    要的结果就是
    标题(a)
    a1,a2,a3
    a4, #  #
    标题(b)
    b1,b2,#
    标题(c)
    这样的格式。
      

  11.   

    把这些值按照字母分开,比如:把A,A1,A2,A3放到一个LIST_A里面,把B,B1,B2放到LIST_B里面,最后把LIST_A,LIST_B放到LIST_all里面。
    ------------------怎么好像一条很简单的 SELECT TB_DEP FROM 表 ORDER BY TB_DEP 就解决了
    结果就是:
    A
    A1
    A2
    A3
    B
    B1
    B2
      

  12.   

    不用SQL了,打印一个字符串。
      

  13.   

    ResultSet rs=s.executeQuery("select dep from TB_DEP order by dep");
    if (rs==null) return;
            String tmpS;//临时变量
            char c;
            char c0='0';//记录上一个m值
            int k=0;//计数用
            
            for(int i=0;rs.next();i++,k++) {
                tmpS=sss[i];
                c=tmpS.charAt(0);
                
                if (c != c0){
                    c0=c;//记录上一个首字符是什么
                   
                    //处理补充#问题,如果当前k不足三,补足相应的数
                    if (k==1)  System.out.print(",#,#");
                    if (k==2) System.out.print(",#");                System.out.println("\n"+"标题(" +c+")" );
                    System.out.print(tmpS);
                    k=0;
                }else{
                    if (k % 3==0){
                        System.out.println("\n");
                        k=0;
                    }else{
                        System.out.print(",");
                    }
                    System.out.print(tmpS);
                }
            }
        }