可以使用什么函数对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
类,例如ArrayList
。 Vector
类是同步的,因此除非确实需要同步访问,否则应该使用其他List
实现之一。
矢量是一个列表
Collections.sort(nameOfTheVectorToBeSorted); 在你的向量上尝试这个,它将被排序。
不要忘记在您的类中添加implements Comparable<>
:
public class XXXX implements Comparable { }
并在您的向量中存储的对象类型的类中重新定义compareTo()
。
我也遇到了这个问题,Eclipse IDE告诉我Collection.sort()
仅用于List
。 在我做了我刚刚说的话之前,它无法正常工作。
Collections.sort(vector_name)
它会对矢量进行排序,因此您无需将上述命令的结果分配回矢量。
这是因为Vectors是列表的实现。