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

时间:2010-01-15 14:07:01

标签: java vector sorting

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

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

我正在寻找类似的东西:

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

7 个答案:

答案 0 :(得分:28)

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

Vector vector = new Vector();

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

List list = new Vector();

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

这是关于订购对象的Sun tutorial

这是另一个SO answer,其中包含完整的代码示例。

那就是说,为什么你仍然坚持遗产 Vector课程?如果可以的话,只需用十多年前被设计为替代Vector的改进版ArrayList替换。

答案 1 :(得分:15)

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

Vector是一个List

答案 4 :(得分:1)

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

答案 5 :(得分:1)

不要忘记在课堂上添加implements Comparable<>

public class XXXX 
    implements Comparable<XXXX> {

}

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

我也遇到了这个问题,Eclipse IDE告诉我Collection.sort()仅适用于List<T>。在我做了刚才所说的话之前,它无法发挥作用。

答案 6 :(得分:0)

Collections.sort(vector_name)

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

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