Arrays实用功能

java.util.Arrays有一套用于数组的static实用方法。
equals():比较两个数组是否相等,两个数组内容相同,且数组大小也相同才返回true。
fill():用一个值填充数组。
sort():对数组进行排序, 基本类型用快速排序,针对对象用稳定归并排序。
binarySearch():在排好序中的数组中进行二分查找,找到元素则返回元素的索引,否则返回负数。数组中若包含重复元素,无法确保找到的是哪一个。
asList():由数组得到一个list, 但是这个List的实现类是java.util.Arrays.ArrayList这个类(而不是java.util.ArrayList),它的内部保存了数组的引用,修改了数组的值,list的值也会改变。对list做add、remove操作会抛出UnsupportedOperationException异常, 因为它本质还是一个大小不可变的数组。
System.arraycopy():比for循环更高效的数组复制方法,它是浅拷贝,如果复制对象数组,只会复制对象的引用。
对于元素不是基本类型的对象,用equals()和sort()方法时,需重写元素的equals()方法和实现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 list = Arrays.asList(c);

// list.add(1); 不能增加或删除元素,因为它内部是数组会抛异常

System.out.println(list);

System.arraycopy(b,
0
, c,
0
, b.length);

System.out.println(list);
// 数组的内容改变了,因为asList()方法,只是保存了数组的引用

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长度不同

System.out.println(Arrays.equals(a1, c1));
// false

System.arraycopy(a1,
0
, d1,
0
, a1.length);
// 长度相同,对应元素也相同

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

}

}

输出结果:true[11, 9, 2, 5, 8, 0, 6, null, null, null][15, 8, 45, 62, 12, 3, 10, 8, null, null]falsetruetruefalse

你可能感兴趣的:(Arrays实用功能)