大家好想问一下 对于一个通过查询语句获得的结果集rs
  如果对这个rs重新排序。。
例如:
name            sex        age
'yy'           'female'     12
'xx'           'male'       22
'tt'           'male'       33
我现在想把数据记录调整为
name            sex        age
'xx'           'male'       22
'yy'           'female'     12
'tt'           'male'       33我该怎么去做。。

解决方案 »

  1.   

    jdk里有sort方法 直接可以用
      

  2.   

    为什么不在SQL中加个order by呢?
      

  3.   

    同样看不懂,如果要排序最好在sql中实现
      

  4.   

    看你需要对什么排序了
    如果对某一个字段或者几个字段排序有两个实现方法:
    1.数据库里面查询的时候增加order by 排序字段
    2.放到treeset里面可以实现排序
    第二种方法可以实现复杂的排序.
      

  5.   

    的确直接在操作查询的时候排序会快很多。建议LZ在SQL语句中增加order by 排序字段进行排序。
      

  6.   

    大家都理解错了。。我的意思不需要orderby。
    直接对结果集进行处理。
    如何对一个获得的结果集 进行二次处理。!
    我想把其中的一条数据记录放到第一位。
    这条记录是随意的。!
      

  7.   

    这个啊,用LinkedList + Hashtable吧,可以解决。如果你对列也有要求,建议可以用
    LinkedList + LinkedHashSet
      

  8.   

    不推荐ArrayList,效率没有LinkedList高,而且有数量限制
      

  9.   

    直接修改ResultSet的排序估计不太可行吧。你最好就是使用TreeSet<MyUserObject>去做,然后在MyUserObject中实际Comparable接口中的方法,然后
    TreeSet<MyUserObject> alluser = new TreeSet<MyUserObject>();
    while(rs.next()) {
      MyUserObject user = new MyUserObject(rs.getString(1), rs.getString(2), rs.getInt(3));
      alluser.add(user);
    }...这样操作后就set就按你写的顺序去排列好了。不要使用LinkedList及ArrayList
      

  10.   

    ChDw . 你的MyUserObject类我怎么没有找到,你这样操作的话,就是说需要对所有的结果集进行操作.我并不希望这样,这和我的初衷不一样........我的想法是:
    对于一个结果集合.我获得之后,假设里面有三百条数据.里面存放的是职业(农名,程序员,会计,学生,司机,boss,经理.................)其中第一百条的数据是医生.我现在的操作是把医生这条数据放到最前面.其他的数据的相对位置不变.至于把这个结果集怎么封装.我没有要求.
     目的是 用于前台显示的时候 比如修改一个人的职业信息时候,修改栏是一个下拉列表.以前处理的时候.先把所有的职业信息全显示,然后再根据这个人的职业信息,对这个下拉列表进行处理.这些处理都是在js代码里面..我现在不想用js. 把这样的处理放在后台.当前台显示这个下拉列表的时候.它取得的结果集 的第一条数据就是医生(或者说是这个人的职务信息)
      

  11.   

    晕死,MyUserObject当然是指你自己写一个类,JDK怎么可能有这个类。如果你只是要求部分数据提前、其它数据顺序不变的话,则不应该使用我上述的排序算法。换一个做法就行啦:
    List<MyUserObject> advanceUsers = new ArrayList<MyUserObject>();
    List<MyUserObject> remainUsers = new ArrayList<MyUserObject>();while(rs.next()) {
      MyUserObject user = new MyUserObject(rs.getString(1), rs.getString(2), rs.getInt(3));
      if(needAdvance(user))//在这里写一个方法去判断到底这个用户是否该提前
        advanceUsers.add(user);
      else
        remainUsers.add(user);
    }...
    这样先显示advanceUsers 再显示remainUsers 就完事了
      

  12.   

    多谢米哥..过两天再给你分..我再看看其他兄弟姐妹有没有更好的方法..
       我现在有个想法.就是定义一个list.先做advanceUsers操作.操作之后用deleteRow删除rs中该条记录.循环到最后,游标回到前面,再把余下的记录放到这个list里面.
       不知道这个想法符合实际吗....
       还有个问题,请教大家,对于一个rs结果集合.我循环到最后,这个rs是不是就自动关闭了.游标无法回到前面了. 我以前这么试过.但是最后rs 就 null 了...找资料看..也没有看到相关的资料..还请有 大牛 们 不吝赐教!
       小弟 多谢了.