Vector数据排序问题 是啊,在SQL里先order by一次不行吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然是有特定的需求才会这样,跟你们说明白点吧,当用户想排序展示数据时,才会去排序,也就是说在表示层,Vector初始是没有排序的。 我只是觉得你的要求很奇怪,既然在取得时候就可以很简单的排序,为什么非要取出来以后在排序呢。既然你非要做这费力不讨好的事情,你可以先实现接口java.lang.Comparable,然后使用java中提供的排序方法,Arrays,Collections 都可以。 如果都作不费力讨好的事,那还要写代码作什么,在家里呆着。如果说我想升序,或降序,想按哪个字段排序,这些不确定的东西,你放在sql里合适吗。 //如果说我想升序,或降序,想按哪个字段排序,这些不确定的东西,你放在sql里合适吗。当然可以。我并不觉得你这样做有什么好处,把数据取出来放到内存里虽然操作比较快,但是访问量大的话没什么好处。还有,如果客户端排序不是很频繁的话,重新访问一次数据库好了。 楼上的,很感谢你的关注,但我想告诉你,要考虑到代码的可重用性,扩展性,你这样是行不通的,一个变化写一个sql,那是作小项目。 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());}abc 这样简单的数据结构不需要用什么vector去排序了,我说清楚 一点,Vector里每一个元素都是一个object也就是一条记录,我可能会按这条记录里的任何字段去排Vector, 你可以写一个方法,这个方法接受一条记录(某个对象)与排序的方法,在里面你排好,然后再返回一个Vector。 方法已经告诉你了,用UTIL里的API就可以了,自己写吧。 //我说清楚 一点,Vector里每一个元素都是一个object也就是一条记录,//我可能会按这条记录里的任何字段去排Vector,public static void sort(List list, Comparator c);就用这么简单的一个api,相比较哪个字段,自己编写Comparator。如果你觉得没必要用这个api,那自己写一个排序方法好了,那么多排序的方法,你总的会一种吧。具体方法都有了,你还要怎样?要大家给你写出具体的代码么? 竟然有那么多人叫楼主在sql里排序... >_<Vector、List、ArrayList、Hash、Hashtable等一系列的集合对象是会对其中的对象集合自动排序的...直接从数据集到Vector...就算数据集是有顺序的...到Vector中后顺序也会乱掉..除非你自己手工的一个一个指定索引的put进去... 强烈同意 flyforlove(为情飞) ! 同意 flyforlove(为情飞) 自己编写多个Comparator,你想怎么排,按那个字段排,具体就是Comparator的int compare(Object o1, Object o2)怎么去写的问题。 其实这个问题还有些细节比较难实现。比如放在Vector中的元素都是Object,而当从数据库取出的数据是原始数据类型(int, float等等)的时候,要把它当什么Object来存放呢?如果把int当成String来存放,那么int和String的排序结果是不同的。请大家发表意见。 java2 321页15.7节有类似的描述可以参考一下 楼上的楼上...int,float你放的vector里去干嘛...汗... 你要实现Comparator接口就可以,这样,你就可以指定以什么排序什么的。然后用Collections.sort();就可以了 to:fantasyCoder(JC★牛仔)楼主开这个贴,就是说把从数据库查询出来的所有的数据放在Vector里,然后对其进行排序。to blasterboy(自由给与我力量。支持O'Reilly)你说的没有错,大方向就是这样做。但是有细节的问题还有待进一步考虑。比如一个int数作为Object存放在Vector中,当从Vector中取出这个Object时,如何能让它回到原来的类型? //但是有细节的问题还有待进一步考虑。比如一个int数作为Object存放在Vector中,当从//Vector中取出这个Object时,如何能让它回到原来的类型?我很奇怪你为什么会问这样的问题呢? java.util.Arrays ---static void sort(Object[] a, Comparator c) java.util.Collections ---static void sort(List list, Comparator c) 都提供了sort方法,根据你的需要实现 Comparator接口就行了 to flyforlove(为情飞):我为什么要问这样的问题。因为:当你写class myComparator implements Comparator{}时,必须要overriede 这个方法:int compare(Object o1, Object o2);在这个方法内比较两个对象是这样比较的o1.compareTo(o2).但是Object没有compareTo()方法,所以需要知道o1,o2原本的类型。 自己动手,丰衣足食!还是自己写一个!!!赞成 flyforlove(为情飞) 的观点!//如果你觉得没必要用这个api,那自己写一个排序方法好了,那么多排序的方法,你总的会一种吧。//具体方法都有了,你还要怎样?要大家给你写出具体的代码么? TO: Tasia(这里是CSDN吗?) 如果我没理解错的话楼主需要的是从数据库取出一行记录,如果jdbc,则自行包装成一个VO,如果是O/R mapping则直接获取一个PO,然后放到Vector进行排序,而不是你所谓的--->其实这个问题还有些细节比较难实现。比如放在Vector中的元素都是Object,而当从数据库取出的数据是原始数据类型(int, float等等)的时候,要把它当什么Object来存放呢?如果把int当成String来存放,那么int和String的排序结果是不同的。排序的是一个字段包装的对象,而不是某一个字段你将int和float比较有什么意义方法楼上的几位已经说很清楚了 hoho,我没有说过要将int与float相比较。不讨论这个问题啦。 为什么不用冒泡排序的方法呢.VECTOR好象没有专门的排序的方法.但你可以自己写一个排序的方法啊.然后,将数据按照排好的顺序存入VECTOR就行了啊. 关于wait 和 notify 锁有问题? 怎么把一个applet改为application,以这个applet为例子 大神请进 指点下 遇到个有意思的问题,看看你想到答案了没有·· 中文乱码问题 问一个方法调用的问题 如何再数组中 输入查询,代码我已写了一半------谁帮我续一下去 刚学java,看到struts不知道是什么问一下 java如何实现上传和下载(有关书籍也可以)? 有谁用过SKINLookAndFeel???可以给小弟一个例子吗?? 一个奇怪的环境变量的问题,不甚了解,望各位指点! 如何才能除去蓝色的状态条?? 高分请教 100
也就是说在表示层,Vector初始是没有排序的。
如果说我想升序,或降序,想按哪个字段排序,这些不确定的东西,你放在sql里合适吗。
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
具体就是Comparator的
int compare(Object o1, Object o2)
怎么去写的问题。
比如放在Vector中的元素都是Object,而当从数据库取出的数据是原始数据类型(int, float等等)的时候,要把它当什么Object来存放呢?如果把int当成String来存放,那么int和String的排序结果是不同的。
请大家发表意见。
int,float你放的vector里去干嘛...
汗...
然后用Collections.sort();就可以了
楼主开这个贴,就是说把从数据库查询出来的所有的数据放在Vector里,然后对其进行排序。
to blasterboy(自由给与我力量。支持O'Reilly)
你说的没有错,大方向就是这样做。
但是有细节的问题还有待进一步考虑。比如一个int数作为Object存放在Vector中,当从Vector中取出这个Object时,如何能让它回到原来的类型?
//Vector中取出这个Object时,如何能让它回到原来的类型?我很奇怪你为什么会问这样的问题呢?
java.util.Collections ---static void sort(List list, Comparator c) 都提供了sort方法,根据你的需要实现 Comparator接口就行了
我为什么要问这样的问题。因为:
当你写class myComparator implements Comparator{}时,必须要overriede 这个方法:
int compare(Object o1, Object o2);在这个方法内比较两个对象是这样比较的o1.compareTo(o2).但是Object没有compareTo()方法,所以需要知道o1,o2原本的类型。
赞成 flyforlove(为情飞) 的观点!
//如果你觉得没必要用这个api,那自己写一个排序方法好了,那么多排序的方法,你总的会一种吧。
//具体方法都有了,你还要怎样?要大家给你写出具体的代码么?
楼主需要的是从数据库取出一行记录,如果jdbc,则自行包装成一个VO,如果是O/R mapping
则直接获取一个PO,然后放到Vector进行排序,而不是你所谓的--->其实这个问题还有些细节比较难实现。
比如放在Vector中的元素都是Object,而当从数据库取出的数据是原始数据类型(int, float等等)的时候,要把它当什么Object来存放呢?如果把int当成String来存放,那么int和String的排序结果是不同的。排序的是一个字段包装的对象,而不是某一个字段
你将int和float比较有什么意义方法楼上的几位已经说很清楚了
不讨论这个问题啦。