java.util.Arrays有一套用于數(shù)組的static實(shí)用方法。
equals():比較兩個(gè)數(shù)組是否相等,兩個(gè)數(shù)組內(nèi)容相同借帘,且數(shù)組大小也相同才返回true。
fill():用一個(gè)值填充數(shù)組。
sort():對(duì)數(shù)組進(jìn)行排序, 基本類(lèi)型用快速排序,針對(duì)對(duì)象用穩(wěn)定歸并排序障涯。
binarySearch():在排好序中的數(shù)組中進(jìn)行二分查找,找到元素則返回元素的索引膳汪,否則返回負(fù)數(shù)唯蝶。數(shù)組中若包含重復(fù)元素,無(wú)法確保找到的是哪一個(gè)旅敷。
asList():由數(shù)組得到一個(gè)list, 但是這個(gè)List的實(shí)現(xiàn)類(lèi)是java.util.Arrays.ArrayList這個(gè)類(lèi)(而不是java.util.ArrayList)生棍,它的內(nèi)部保存了數(shù)組的引用颤霎,修改了數(shù)組的值媳谁,list的值也會(huì)改變。對(duì)list做add友酱、remove操作會(huì)拋出UnsupportedOperationException異常, 因?yàn)樗举|(zhì)還是一個(gè)大小不可變的數(shù)組晴音。
System.arraycopy():比f(wàn)or循環(huán)更高效的數(shù)組復(fù)制方法,它是淺拷貝缔杉,如果復(fù)制對(duì)象數(shù)組锤躁,只會(huì)復(fù)制對(duì)象的引用。
對(duì)于元素不是基本類(lèi)型的對(duì)象或详,用equals()和sort()方法時(shí)系羞,需重寫(xiě)元素的equals()方法和實(shí)現(xiàn)Comparable接口。
import
java.util.Arrays;
import
java.util.List;
public
class
ArraySDemo {
public
static
void
main(String[] args) {
Integer[] a = {
11
,
9
,
2
,
5
,
8
,
0
,
6
};
Integer[] b = {
15
,
8
,
45
,
62
,
12
,
3
,
10
,
8
};
Integer[] c =
new
Integer[
10
];
Integer[] d =
new
Integer[a.length];
System.arraycopy(a,
0
, d,
0
, a.length);
System.out.println(Arrays.equals(a, d));
System.arraycopy(a,
0
, c,
0
, a.length);
List<Integer> list = Arrays.asList(c);
// list.add(1); 不能增加或刪除元素霸琴,因?yàn)樗鼉?nèi)部是數(shù)組會(huì)拋異常
System.out.println(list);
System.arraycopy(b,
0
, c,
0
, b.length);
System.out.println(list);
// 數(shù)組的內(nèi)容改變了椒振,因?yàn)閍sList()方法,只是保存了數(shù)組的引用
int
[] a1 = {
11
,
9
,
2
,
5
,
8
,
0
,
6
};
int
[] b1 = {
15
,
8
,
45
,
62
,
12
,
3
,
10
,
8
};
int
[] c1 =
new
int
[
30
];
int
[] d1 =
new
int
[a1.length];
System.arraycopy(a1,
0
, c1,
0
, a1.length);
// a1和c1長(zhǎng)度不同
System.out.println(Arrays.equals(a1, c1));
// false
System.arraycopy(a1,
0
, d1,
0
, a1.length);
// 長(zhǎng)度相同梧乘,對(duì)應(yīng)元素也相同
System.out.println(Arrays.equals(a1, d1));
// true
System.out.println(Arrays.equals(a1, a1.clone()));
Arrays.sort(a1);
System.out.println(Arrays.equals(a1, d1));
// 排序后不同了 false
}
}
輸出結(jié)果:true[11, 9, 2, 5, 8, 0, 6, null, null, null][15, 8, 45, 62, 12, 3, 10, 8, null, null]falsetruetruefalse