Arrays.sort用法
package test;
import java.util.Arrays;
import java.util.Comparator;
public class ArraySortDemo {
/**
* 整数型数组排序
*/
public void sortIntArray() {
int [] arrayToSort = new int [] { 48 , 5 , 89 , 80 , 81 , 23 , 45 , 16 , 2 };
System.out.println( " 整数型数组排序,排序前: " );
for ( int i = 0 ; i < arrayToSort.length; i ++ ){
System.out.print(arrayToSort[i] + " , " );
}
// 调用数组的静态排序方法sort
Arrays.sort(arrayToSort);
System.out.println();
System.out.println( " 排序后: " );
for ( int i = 0 ; i < arrayToSort.length; i ++ ){
System.out.print(arrayToSort[i] + " , " );
}
}
/**
* 字符型数组排序demo
*/
public void sortStringArray() {
String[] arrayToSort = new String[] { " Oscar " , " Charlie " , " Ryan " ,
" Adam " , " David " , " aff " , " Aff " };
System.out.println();
System.out.println( " 字符型数组排序,排序前: " );
for ( int i = 0 ; i < arrayToSort.length; i ++ ){
System.out.print(arrayToSort[i] + " , " );
}
System.out.println();
System.out.println( " 排序后: " );
// 调用数组的静态排序方法sort
Arrays.sort(arrayToSort);
for ( int i = 0 ; i < arrayToSort.length; i ++ ){
System.out.print(arrayToSort[i] + " , " );
}
}
/**
* 对象数组排序demo
*/
public void sortObjectArray() {
Dog o1 = new Dog( " dog1 " , 1 );
Dog o2 = new Dog( " dog2 " , 4 );
Dog o3 = new Dog( " dog3 " , 5 );
Dog o4 = new Dog( " dog4 " , 2 );
Dog o5 = new Dog( " dog5 " , 3 );
Dog[] dogs = new Dog[] { o1, o2, o3, o4, o5 };
System.out.println();
System.out.println( " 对象数组排序排序前: " );
for ( int i = 0 ; i < dogs.length; i ++ ) {
Dog dog = dogs[i];
System.out.print(dog.getName() + " [ " + dog.getWeight() + " ], " );
}
Arrays.sort(dogs, new ByWeightComparator());
System.out.println();
System.out.println( " 排序后: " );
for ( int i = 0 ; i < dogs.length; i ++ ) {
Dog dog = dogs[i];
System.out.print(dog.getName() + " [ " + dog.getWeight() + " ], " );
}
}
public static void main(String[] args) {
ArraySortDemo t = new ArraySortDemo();
t.sortIntArray();
t.sortStringArray();
t.sortObjectArray();
}
}
/**
* 定义了一个Dog类
*/
class Dog {
private String name;
private int weight;
public Dog(String name, int weight) {
this .setName(name);
this .weight = weight;
}
public int getWeight() {
return weight;
}
public void setWeight( int weight) {
this .weight = weight;
}
public void setName(String name) {
this .name = name;
}
public String getName() {
return name;
}
}
/**
* 因为要对对象进行排序,所以要实现java.util.Comparator接口的compare(T o1, T o2)方法,在该方法中自定义排序算法。
*/
class ByWeightComparator implements Comparator {
public final int compare(Object pFirst, Object pSecond) {
int aFirstWeight = ((Dog) pFirst).getWeight();
int aSecondWeight = ((Dog) pSecond).getWeight();
int diff = aFirstWeight - aSecondWeight;
if (diff > 0 )
return 1 ;
if (diff < 0 )
return - 1 ;
else
return 0 ;
}
}
运行结果:
整数型数组排序,排序前:
48 , 5 , 89 , 80 , 81 , 23 , 45 , 16 , 2 ,
排序后:
2 , 5 , 16 , 23 , 45 , 48 , 80 , 81 , 89 ,
字符型数组排序,排序前:
Oscar,Charlie,Ryan,Adam,David,aff,Aff,
排序后:
Adam,Aff,Charlie,David,Oscar,Ryan,aff,
对象数组排序排序前:
dog1[ 1 ],dog2[ 4 ],dog3[ 5 ],dog4[ 2 ],dog5[ 3 ],
排序后:
dog1[ 1 ],dog4[ 2 ],dog5[ 3 ],dog2[ 4 ],dog3[ 5 ],
List list
=
new
ArrayList() ;
list.add( " abcd " ) ;
list.add( " abdc " ) ;
list.add( " aadf " ) ;
list.add( " aabf " ) ;
/* 将list转为数组 */
String[] strs = new String[list.size()] ;
list.toArray(strs) ;
/* 排序,只排2<=索引<4之间的数据 */
Arrays.sort(strs, 2 , 4 ) ;
for (String str : strs){
System.out.println(str) ;
}
list.add( " abcd " ) ;
list.add( " abdc " ) ;
list.add( " aadf " ) ;
list.add( " aabf " ) ;
/* 将list转为数组 */
String[] strs = new String[list.size()] ;
list.toArray(strs) ;
/* 排序,只排2<=索引<4之间的数据 */
Arrays.sort(strs, 2 , 4 ) ;
for (String str : strs){
System.out.println(str) ;
}