vector中排序的问题,请指教 在你的Vector里面,Date的格式是什么样子?不会就是这样吧:02/04/2002 06:33:23 ?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把vector转化为TreeSet或者TreeMap, 看起来TreeMap比较好一点 To : java_alias(六翼黑猫) 对,日期格式就是那个样子的 时间换成 YYYY.MM.DD HH:MM:SS 更好吧 时间可以换成时间换成 YYYY.MM.DD HH:MM:SS 格式的,可是如何排序呢? 建议写一个类继承vector,实现comparable接口public class sortedVector extends Vector implements Comparable{ public int compareTo(Object a , Object b) { Date a1 = (Date)a.userDate; Date b1 = (Date)b.userDate; if( a1.compareTo(b1) == 0 )//两个日期相同,这里使用Date自己的compareTo方法 { return 0; } else if( a1.compareTo(b1) < 0)//a1比b1早 { return -1; } else //a1比b1晚 { return 1; } }}//你可以使用这个类同样拥有vector的全部功能,并且具有比较功能,可以根据比较方法//冒泡排序得到一个你需要的顺序,以上希望对你有帮助,谢谢。 如果我没有猜错的话,你用的是vector of vectors.Vector vecTable = new Vector(); Vector vec = new Vector(); vec.add("username1"); vec.add("02/04/2002 06:33:23"); vec.add("80"); vecTable.add(vec); ......这样做是很不明了的。建议建一个Table Class 和一个private Row inner Class.Row 用ArrayList cells实现,holding String, Date, Integer.Table 也用ArrayList rows实现,holding Row. 放多一个HashMap来对应column name 和 column index.关于排序,我们写得比较复杂和强大,一个简单的写法就是让Row implements Comparable,然后根据Date column写个compareTo方法。int compareTo(Object row){ Date d1 = (Date)cells.get(1); Date d2 = (Date)((Row)row).get(1); return d1.compareTo(d2);}这样,只要用java.util.Collections.sort(rows)就可以排序了。这里,最后提一下我们的写法,为了可以对任意项甚至多项进行顺序或逆序排序,我们的方法是写一个inner comparator class. 也可以新建一个类,复合vector为新类的一个域,并在新类中加入compareTo方法。 谢谢各位了,我参考下to: hayai(生命树) 用的的确是vector of vectors,因为接手的是以前写的项目,所以有些地方不好,并且现在要加一点功能,必须还要按照原来的思路走......痛苦...... 建议:在从数据库取出时就排好序,再写到vector中不是更方便!!!! 各位大侠指点,小弟我刚学JAVA, 请问看什么书比较容易入门。小弟也学过C,VC。在线等待。 TO:hayai(生命树) :可否指教。 TO:Jacky1206(胖胖) 请指点, JAVA 自学可以吗? 在北京上什么班比较好。 关于JList的小问题 tcp server的问题 JSP访问数据库必须按顺序? 求救,在Socket下提示“AWT-EventQueue-1”错误“????? 在JeditPanel中javascript代码都不执行?!? 有谁要jbuilder8的注册机? 大哥在帮帮忙吧!!! 请问javax.mail里面的东西做什么用? 小弟刚开始学JAVA,遇到了难题,请教: 我在网上下在了一个java写的编辑器的程序,扩展名是jar,可以用winzip打开,请问如何能够运行呢? 用weblogic6.1和oracle需要什么硬件条件?(100分) 如何開始學java
对,日期格式就是那个样子的
可是如何排序呢?
public class sortedVector extends Vector implements Comparable
{
public int compareTo(Object a , Object b)
{
Date a1 = (Date)a.userDate;
Date b1 = (Date)b.userDate;
if( a1.compareTo(b1) == 0 )//两个日期相同,这里使用Date自己的compareTo方法
{
return 0;
}
else if( a1.compareTo(b1) < 0)//a1比b1早
{
return -1;
}
else //a1比b1晚
{
return 1;
}
}
}
//你可以使用这个类同样拥有vector的全部功能,并且具有比较功能,可以根据比较方法
//冒泡排序得到一个你需要的顺序,以上希望对你有帮助,谢谢。
Vector vecTable = new Vector();
Vector vec = new Vector();
vec.add("username1");
vec.add("02/04/2002 06:33:23");
vec.add("80");
vecTable.add(vec);
......
这样做是很不明了的。
建议建一个Table Class 和一个private Row inner Class.
Row 用ArrayList cells实现,holding String, Date, Integer.
Table 也用ArrayList rows实现,holding Row. 放多一个HashMap来对应column name 和 column index.
关于排序,我们写得比较复杂和强大,一个简单的写法就是让Row implements Comparable,然后根据Date column写个compareTo方法。
int compareTo(Object row)
{
Date d1 = (Date)cells.get(1);
Date d2 = (Date)((Row)row).get(1);
return d1.compareTo(d2);
}
这样,只要用java.util.Collections.sort(rows)就可以排序了。
这里,最后提一下我们的写法,为了可以对任意项甚至多项进行顺序或逆序排序,我们的方法是写一个inner comparator class.
用的的确是vector of vectors,因为接手的是以前写的项目,所以有些地方不好,并且现在要加一点功能,必须还要按照原来的思路走......痛苦......
小弟也学过C,VC。在线等待。
在北京上什么班比较好。