是啊,在SQL里先order by一次不行吗?

解决方案 »

  1.   

    当然是有特定的需求才会这样,跟你们说明白点吧,当用户想排序展示数据时,才会去排序,
    也就是说在表示层,Vector初始是没有排序的。
      

  2.   

    我只是觉得你的要求很奇怪,既然在取得时候就可以很简单的排序,为什么非要取出来以后在排序呢。既然你非要做这费力不讨好的事情,你可以先实现接口java.lang.Comparable,然后使用java中提供的排序方法,Arrays,Collections 都可以。
      

  3.   

    如果都作不费力讨好的事,那还要写代码作什么,在家里呆着。
    如果说我想升序,或降序,想按哪个字段排序,这些不确定的东西,你放在sql里合适吗。
      

  4.   

    //如果说我想升序,或降序,想按哪个字段排序,这些不确定的东西,你放在sql里合适吗。当然可以。我并不觉得你这样做有什么好处,把数据取出来放到内存里虽然操作比较快,但是访问量大的话没什么好处。还有,如果客户端排序不是很频繁的话,重新访问一次数据库好了。
      

  5.   

    楼上的,很感谢你的关注,但我想告诉你,要考虑到代码的可重用性,扩展性,你这样是行不通的,一个变化写一个sql,那是作小项目。
      

  6.   

    Vector v=new Vector();
    v.add("c");
    v.add("b");
    v.add("a");
    Collections.sort(v);
    Enumeration m=v.elements();while(m.hasMoreElements())
    {System.out.println(m.nextElement());}a
    b
    c
      

  7.   

    这样简单的数据结构不需要用什么vector去排序了,我说清楚 一点,Vector里每一个元素都是一个object也就是一条记录,我可能会按这条记录里的任何字段去排Vector,
      

  8.   

    你可以写一个方法,这个方法接受一条记录(某个对象)与排序的方法,在里面你排好,然后再返回一个Vector。
      

  9.   

    方法已经告诉你了,用UTIL里的API就可以了,自己写吧。
      

  10.   

    //我说清楚 一点,Vector里每一个元素都是一个object也就是一条记录,//我可能会按这条记录里的任何字段去排Vector,public static void sort(List list, Comparator c);就用这么简单的一个api,相比较哪个字段,自己编写Comparator。如果你觉得没必要用这个api,那自己写一个排序方法好了,那么多排序的方法,你总的会一种吧。具体方法都有了,你还要怎样?要大家给你写出具体的代码么?
      

  11.   

    竟然有那么多人叫楼主在sql里排序... >_<Vector、List、ArrayList、Hash、Hashtable等一系列的集合对象是会对其中的对象集合自动排序的...直接从数据集到Vector...就算数据集是有顺序的...到Vector中后顺序也会乱掉..除非你自己手工的一个一个指定索引的put进去...
      

  12.   

    强烈同意 flyforlove(为情飞) !
      

  13.   

    同意 flyforlove(为情飞)  自己编写多个Comparator,你想怎么排,按那个字段排,
    具体就是Comparator的
    int compare(Object o1, Object o2)
    怎么去写的问题。
      

  14.   

    其实这个问题还有些细节比较难实现。
    比如放在Vector中的元素都是Object,而当从数据库取出的数据是原始数据类型(int, float等等)的时候,要把它当什么Object来存放呢?如果把int当成String来存放,那么int和String的排序结果是不同的。
    请大家发表意见。
      

  15.   

    java2   321页15.7节有类似的描述可以参考一下
      

  16.   

    楼上的楼上...
    int,float你放的vector里去干嘛...
    汗...
      

  17.   

    你要实现Comparator接口就可以,这样,你就可以指定以什么排序什么的。
    然后用Collections.sort();就可以了
      

  18.   

    to:fantasyCoder(JC★牛仔)
    楼主开这个贴,就是说把从数据库查询出来的所有的数据放在Vector里,然后对其进行排序。
    to blasterboy(自由给与我力量。支持O'Reilly)
    你说的没有错,大方向就是这样做。
    但是有细节的问题还有待进一步考虑。比如一个int数作为Object存放在Vector中,当从Vector中取出这个Object时,如何能让它回到原来的类型?
      

  19.   

    //但是有细节的问题还有待进一步考虑。比如一个int数作为Object存放在Vector中,当从
    //Vector中取出这个Object时,如何能让它回到原来的类型?我很奇怪你为什么会问这样的问题呢?
      

  20.   

    java.util.Arrays ---static void sort(Object[] a, Comparator c)  
    java.util.Collections ---static void sort(List list, Comparator c)  都提供了sort方法,根据你的需要实现 Comparator接口就行了
      

  21.   

    to flyforlove(为情飞):
    我为什么要问这样的问题。因为:
    当你写class myComparator implements Comparator{}时,必须要overriede 这个方法:
    int compare(Object o1, Object o2);在这个方法内比较两个对象是这样比较的o1.compareTo(o2).但是Object没有compareTo()方法,所以需要知道o1,o2原本的类型。
      

  22.   

    自己动手,丰衣足食!还是自己写一个!!!
    赞成 flyforlove(为情飞) 的观点!
    //如果你觉得没必要用这个api,那自己写一个排序方法好了,那么多排序的方法,你总的会一种吧。
    //具体方法都有了,你还要怎样?要大家给你写出具体的代码么?
      

  23.   

    TO: Tasia(这里是CSDN吗?) 如果我没理解错的话
    楼主需要的是从数据库取出一行记录,如果jdbc,则自行包装成一个VO,如果是O/R mapping
    则直接获取一个PO,然后放到Vector进行排序,而不是你所谓的--->其实这个问题还有些细节比较难实现。
    比如放在Vector中的元素都是Object,而当从数据库取出的数据是原始数据类型(int, float等等)的时候,要把它当什么Object来存放呢?如果把int当成String来存放,那么int和String的排序结果是不同的。排序的是一个字段包装的对象,而不是某一个字段
    你将int和float比较有什么意义方法楼上的几位已经说很清楚了
      

  24.   

    hoho,我没有说过要将int与float相比较。
    不讨论这个问题啦。
      

  25.   

    为什么不用冒泡排序的方法呢.VECTOR好象没有专门的排序的方法.但你可以自己写一个排序的方法啊.然后,将数据按照排好的顺序存入VECTOR就行了啊.