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.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) ;
}