可以使用什么函数对Vector进行排序?

我无法在java API中找到矢量的任何排序函数。 Collections.sort仅适用于List而不适用于Vector

我不想编写自己的排序函数,因为我认为java应该实现它。

我正在寻找类似的东西:

 class ClassName implements Comparator .. ClassName cn = ..; sort(cn); 

根据API文档 , Vector只实现List ,所以我不会预见到问题。 也许你的混乱是因为你根据旧的Java 1.0风格声明了Vector

 Vector vector = new Vector(); 

而不是声明它aginst接口(这被认为是良好的做法):

 List list = new Vector(); 

因此,您可以使用Collections#sort()来对集合进行排序,使用Comparable来定义默认排序行为和/或使用Comparator来定义外部可控排序行为。

这是一个关于订购对象的Sun教程 。

这是完整代码示例的另一个SO答案 。

那就是说,为什么你仍然坚持传统的 Vector类? 如果可以,只需用十多年前被设计为Vector替换的改进的ArrayList替换。

Vector实现List,所以Collections.sort可以工作。

根据Vector类的Java API规范,它实现了使用Collections.sort方法所需的List接口。

另外,作为注释,对于大多数用途,可以使用Java Collections Framework中的List实现之一替换Vector类,例如ArrayListVector类是同步的,因此除非确实需要同步访问,否则应该使用其他List实现之一。

矢量是一个列表

Collections.sort(nameOfTheVectorToBeSorted); 在你的向量上尝试这个,它将被排序。

不要忘记在您的类中添加implements Comparable<>

 public class XXXX implements Comparable { } 

并在您的向量中存储的对象类型的类中重新定义compareTo()

我也遇到了这个问题,Eclipse IDE告诉我Collection.sort()仅用于List 。 在我做了我刚刚说的话之前,它无法正常工作。

Collections.sort(vector_name)

它会对矢量进行排序,因此您无需将上述命令的结果分配回矢量。

这是因为Vectors是列表的实现。