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<Integer> 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,426评论 0 6
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,526评论 0 3
  • 第05天API 今日内容介绍 ·Object类& System类 ·日期相关类 ·包装类&正则表达式 ·Date对...
    chcvn阅读 435评论 0 1
  • 多年以后,故地重游,走在每天都经过的那条熟悉的路上,你会有什么样的感受?迎面走来二十多年未曾谋面的儿时玩伴,会唤起...
    雅楠原创阅读 560评论 1 0