我无法在java API中找到矢量的任何排序函数。
Collections.sort
仅适用于List<T>
,不适用于Vector<T>
。
我不想编写自己的排序函数,因为我认为java应该实现它。
我正在寻找类似的东西:
class ClassName implements Comparator<ClassName> ..
ClassName cn = ..;
sort(cn);
答案 0 :(得分:28)
根据API docs,Vector
只是实现了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
类,例如ArrayList
。 Vector
类是同步的,因此除非确实需要同步访问,否则应使用其他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是列表的实现。