7 m# H" f- B6 M2 M; ?* {( O, u% u例子中都要加上import java.util.*和其他外壳代码,如类和静态main方法,我会在第一个例子里写出全部代码,接下来会无一例外的省略。/ |& }, r( B; B
k* w4 z9 o, u2 F- f. O- M/ v
对数组进行排序- |: |8 b- e) N& s
6 q0 R$ g k- j. {' M比如有一个整型数组:! L5 v) k- A4 _/ U: H1 K/ c
4 R. i2 k+ x* N$ U- \- wint[] intArray = new int[] {4, 1, 3, -23}; 6 m% J" i" |4 B/ [- c
我们如何进行排序呢?你这个时候是否在想快速排序的算法?看看下面的实现方法: - T$ q/ m" W% ?* c: x ]. J$ [8 \ x& r' y. r
import java.util.*; % `9 e. `: B0 A1 a3 f& {" t
public class Sort{ * q: }. r0 a( |8 H2 @9 [ public static void main(String[] args){ ( s4 A( o5 n# t% n. x& V& F
int[] intArray = new int[] {4, 1, 3, -23}; ! ^7 X+ @ [/ i7 n0 K, h Arrays.sort(intArray); + `( ?/ B& X: ]( ?( }9 C" t5 C
} # m2 K* i4 g6 w
} : g/ ]0 y: X. g1 I2 _5 F; j* q& K这样我们就用Arrays的静态方法sort()对intArray进行了升序排序,现在数组已经变成了{-23,1,3,4}. : @" ~7 ?5 H, L( y, a ! h" K6 H# {1 {# Q! O如果是字符数组:( W8 c8 ~' z7 l. T+ Q- o" v% e1 e$ p8 ]
" d0 s1 L9 ~$ R* ?/ `
String[] strArray = new String[] {"z", "a", "C"}; 3 B) q* v8 t. x4 N E. ^
我们用: : R i' C% p/ ?, Z0 b7 p, _2 i1 K7 u
Arrays.sort(strArray); " q& E/ J& Q* A进行排序后的结果是{C,a,z},sort()会根据元素的自然顺序进行升序排序。如果希望对大小写不敏感的话可以这样写: 1 H- h6 C9 x) D; S0 s y* g' `: u% Y5 h! tArrays.sort(strArray, String.CASE_INSENSITIVE_ORDER); # Y ]# G$ x3 s. D- u
当然我们也可以指定数组的某一段进行排序比如我们要对数组下表0-2的部分(假设数组长度大于3)进行排序,其他部分保持不变,我们可以使用: 4 o& W& |2 N. \1 l. g! |- u+ T- ^: y! e c
Arrays.sort(strArray,0,2); / b: b% @, h: o! p
这样,我们只对前三个元素进行了排序,而不会影响到后面的部分。 + o+ v. }/ U# t6 J8 c. j5 \& A) d 6 ^& e* X) y! `2 ? [当然有人会想,我怎样进行降序排序?在众多的sort方法中有一个, l3 ?" g/ E# f+ [1 N2 n
2 q* P N. T4 m
sort(T[] a, Comparator<? super T> c) 7 e: ^( Q! a4 w8 D我们使用Comparator获取一个反序的比较器即可,Comparator会在稍后讲解,以前面的intArray[]为例: . k) _( e5 L' i. q/ f& e# B , k% }: s, m1 L6 X. ~, wArrays.sort(intArray,Comparator.reverseOrder()); 1 D' [/ N/ |/ Q1 [这样,我们得到的结果就是{4,3,1,-23}。如果不想修改原有代码我们也可以使用: 9 S9 c6 E8 L' R7 U$ `! o' ]6 y T) E7 U: d: u/ ]2 u
Collections.reverse(Arrays.asList(intArray)); ; C( ^( m" q' ^1 O. K
得到该数组的反序。结果同样为4,3,1,-23}。1 ~+ m1 n7 `/ q3 ^! D3 q8 Q