1:Arrays.sort(int a[])
只需要传入一个数组参数,即可按从小到大排序
import java.util.*;
import java.util.Arrays;
public class Main
{
public static void main(String [] args)
{
int a[] = {3,5,6,7,2,1};
Arrays.sort(a);
for(int i =0;i<6;i++)
System.out.print(a[i] + " ");
}
}
输出结果为:1 2 3 5 6 7
2://如果要降序,需要在数组后加上Collections.reverseOrder()且将int 改为Integer
Arrays.sort(a,Collections.reverseOrder());
import java.util.*;
import java.util.Arrays;
public class Main
{
public static void main(String [] args)
{
Integer a[] = {3,5,6,7,2,1};//int 改为Integer
Arrays.sort(a,Collections.reverseOrder());//如果要降序,只需要在数组后加上Collections.reverseOrder()
for(int i =0;i<6;i++)
System.out.print(a[i] + " ");
}
}
这是一般数组的排序,那么如果是类中某个属性的比较呢?那就需要传入一个比较器参数
Arrays.sort(a,new Comparator<Cust>() {});
import java.util.*;
import java.util.Arrays;
public class Main
{
public static void main(String [] args)
{
Cust a[] = new Cust[3];
a[0] = new Cust();
a[1] = new Cust();
a[2] = new Cust();
a[0].money = 3;
a[1].money = 5;
a[2].money = 1;
Arrays.sort(a,new Comparator<Cust>()//传入 new Comparator<Object>() <>里放对象类名
{
@Override
public int compare(Cust b, Cust c)
{
return b.money - c.money;//升序排列,若要降序改为c.money - b.money即可
}
});
for(int i =0;i<3;i++)
System.out.print(a[i].money + " ");
}
}
class Cust
{
int money;
}
输出 :1 3 5
若是Vector动态数组呢,将Arrays改为Collections即可
Collections.sort(a,new Comparator<Cust>() {});
import java.util.*;
import java.util.Arrays;
public class Main
{
public static void main(String [] args)
{
Vector a = new Vector();
a.add(new Cust(1));
a.add(new Cust(3));
a.add(new Cust(5));
Collections.sort(a,new Comparator<Cust>()//传入 new Comparator<Object>() <>里放对象类名
{
@Override
public int compare(Cust b, Cust c)
{
return b.money - c.money;//升序排列,若要降序改为c.money - b.money即可
}
});
for(int i =0;i<3;i++)
{
Cust tmp = (Cust)a.get(i);
System.out.print(tmp.money + " ");
}
}
}
class Cust
{
int money;
Cust()
{
}
Cust(int money)
{
this.money = money;
}
}
输出:1 3 5
银行程序在对用户金额排序时用到的做法:
@SuppressWarnings("unchecked")//可以不加
void sortCustomer(Vector st)//st数组为存放客户的数组
{
Collections.sort(st,new Comparator<Cust>()//利用sort函数,传入一个比较器参数
{
@Override//重写compare
public int compare(Cust o1,Cust o2)
{
return (int)(o1.m - o2.m);//由于m是double类型,而comparator要求必须返回int类型,故强制转换
}
});
for(int i =0 ;i < st.size();i++)
{
Cust tmp = (Cust) st.get(i);
System.out.println(tmp.name + " ");//按姓名输出金额排名
}
System.out.println();
}