请问在JAVA中 VECTOR排序一定要转成数组吗?有没有排序函数?

来源:百度知道 编辑:UC知道 时间:2024/05/13 02:24:25
比如这个题 如果要对容器元素降序排 只能这样写吗? 不好意思,新手很多不很明白
import java.util.*;
public class Paixu
{
Vector aa;
Paixu()
{
aa=new Vector();
}
public void add(String a)
{
aa.addElement(a);
}
public static void main(String args[])
{
Paixu ak=new Paixu();
for(int i=0;i<args.length;i++)
{
ak.add(args[i]);
}
System.out.println(ak.aa);
System.out.println("µ¹Ðð=============");
for(int i=ak.aa.size()-1;i>=0;i--)
{
System.out.println(ak.aa.get(i));
}

String[] arr=new String[ak.aa.size()];
ak.aa.copyInto(arr);//转数组
String temp;
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr.length-i-1;j++)
{
if(arr[j].compareTo(arr[j+1])>0)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}

Vector是不能自动排序的,2楼说的add()方法加一个数字是你自己加的,等于你自己来排序,呵呵!

要实现排序要用java.util包下的另一个类叫TreeSet
你可以把你要排序的属性放到一个TreeSet中,这个类在java.util包中,而且这个TreeSet中只能存放这个属性,也就是元素对象类型要一致!然后这个对象要是可以比较的,就是说你定义的这个类是可以比较的,这个类要实现Comparable接口,然后实现其中的compareTo方法,给出你的比较方法,像我下面的例子中我对学生这个类用年龄排序,如果年龄相同的TreeSet会把这个对象舍去的,所以你可以给出多个比较方法,比如说年龄相同,就按照姓名在排序,姓名相同再按照学号排序,保证加到TreeSet中的元素不同,因为TreeSet会根据你的比较方法自动舍去相同的元素!
import java.util.*;
public class SetTest {
/**
* @param args
*/
public static void main(String args[]){
TreeSet hs=new TreeSet();

hs.add(new Student("cyq",26));
hs.add(new Student("binxin",24));
hs.add(new Student("binxin",23));
for (Object o:hs){
System.out.println(o);
}

}
}
class Student implements Comparable{
String name;
int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
publi