LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1520|回复: 8

如何对课程时间排序?

[复制链接]
发表于 2004-6-3 21:22:36 | 显示全部楼层 |阅读模式
有一个 vector 的内容是 ["Mon 9:00", "Fri 16:00", "Mon 11:30", "Tue 8:00"] ,要对其排序。

我的笨方法是替换字符串里的 Mon -> 1, Tue -> 2, ...
Collections.sort(vector) 一把,然后再把星期数字换回英文。

但这样子的感觉很不爽,请问有什么好方法是既简单又高效的呢?
发表于 2004-6-3 23:00:58 | 显示全部楼层
可以用 DateFormat 把它们转成 Date 再行比较。

  1. DateFormat df = new SimpleDateFormat("EEE H:mm", Locale.US);
  2. try {
  3.          Vector vec_date = new Vector();
  4.          for (int i = 0; i < vec_str.size(); i++)
  5.                vec_date.add(df.parse((String)vec_str.get(i)));
  6.                Collections.sort(vec_date);
  7.                System.out.println(vec_date);
  8. } catch (ParseException e) {
  9.           System.err.println(e);
  10. }
复制代码

或者用 DateFormat 做一个 Comparator,不过这样就要 parse 多次(次数视 sort 使用的算法而定)。
 楼主| 发表于 2004-6-4 00:11:28 | 显示全部楼层
er...
怎么我昨天就没仔细查一下 api 呢...
Thanks.
发表于 2004-6-4 00:14:39 | 显示全部楼层
对不起,打断一下,文档中是说:
static void        sort(List list): Sorts the specified list into ascending order, according to the natural ordering of its elements.

那个List和Vector什么关系啊,多谢了
 楼主| 发表于 2004-6-4 09:04:12 | 显示全部楼层
我一般就是把 Vector 当 ArrayList 用。
在我的印象中,Vector implements List。
发表于 2004-6-4 14:19:10 | 显示全部楼层
Vector是JAVA1.2以前版本里遗留下来的对象,在JAVA2里面推荐使用ArrayList而不是Vector,因为Vector很有可能会在一下个版本的JDK中取消掉。
但是Vector是有线程的,而ArrayList是无线程的
发表于 2004-6-4 14:22:28 | 显示全部楼层
http://www.wgqqh.com/shhgs/book/chap11.pdf
这里写的非常清楚,并且也容易理解。
发表于 2004-6-6 13:07:23 | 显示全部楼层
vector,hashtable是java1的产品,在java 2(jdk1.2以后)不提倡使用,如果新学java, 根本不用理会。。。java 2 有完全的替代品。。。
vector--->ArrayList
hashtable---->HashMap
enumeration---->Iterator
发表于 2004-6-6 13:09:46 | 显示全部楼层
最初由 iDay 发表
Vector是JAVA1.2以前版本里遗留下来的对象,在JAVA2里面推荐使用ArrayList而不是Vector,因为Vector很有可能会在一下个版本的JDK中取消掉。
但是Vector是有线程的,而ArrayList是无线程的

vector是线程同步的。。。ArrayList没有作这个限制。。。可以用
synchronnized{
}
来实现同步。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表