0%

Java中Arrays类的常用方法

Arrays类位于java.util包中,主要包含了操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常方便。

Arrays.fill();//填充数组

1
2
3
//主要有两种功能
Arrays.fill(array,n);//将数组中所有值赋值为n
Arrays.fill(array,from,to,n);//将数组中下标为[from,to)区间内的值赋值为n

Arrays.sort();//数组排序

静态方法sort,可传入需排序的数组,也就是数组的引用,排序完成的结果也通过这个引用来更改数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Arrays.sort(arr);//默认升序排列,字符串排序参考ASCII表对应的值升序排列
//例如:
//输出:[1, C, a, z]
String[] str = new String[]{"1","z","a","C"};
Arrays.sort(str);
System.out.println(Arrays.toString(str));

//可忽略大小写的从小sort方法
//输出:[1, a, C, z]
Arrays.sort(str,String.CASE_INSENSITIVE_ORDER);

//反向排序的重载方法,可做降序排列,只能用于对象类型
//输出:[z, a, C, 1]
Arrays.sort(str,Collections.reverseOrder());
]

//忽略大小写反向排序Case_insensitive reverse-order sort
//输出:[z, C, a, 1]
Arrays.sort(str,String.CASE_INSENSITIVE_ORDER);
Collections.reverse(Arrays.asList(str));

//选择数组的指定位置进行排序
//输出:[1, 2, 3, 4, 5, 6, 7]
int[] arr = {4,3,2,1,5,6,7};
Arrays.sort(arr,0,4);//给该数组的[0,4)区间排序

Arrays.toString();//将数组的内容打印

1
2
3
4
5
6
//数组中正常打印一个数组,打印的为该数组的引用,及一个存储地址
System.out.println(arr);
//如果要完整的输出数组元素,有两种方法可选;
//1.利用循环法,使用for()循环将数组元素一个个输出到控制台
//2.使用toString()方法,将数组元素转换为字符串再输出
String str = Arrays.toString(arr);

Arrays.equals();//比较数组元素是否相等

1
2
3
4
5
int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
//以上两个对象是数组的引用地址,在使用equals()方法时,比较的是两个对象的地址值是否相等,而不是里面的元素是否相等
boolean a = Arrays.equals(arr1,arr2)
//a为true,Arrays重写了equals方法,所以可以比较数组中的元素是否相等

Arrays.binarySearch();//二分查找法找指定元素的索引值(下标)//可见二分查找法

Arrays.copyOf()和Arrays.copyOfRange();//截取数组

1
2
int[] arr1 = Arrays.copyOf(arr,3);//截取arr数组的前3个元素赋值给新数组arr1
int[] arr1 = Arrays.copyOfRange(arr,1,3);//截取arr数组下标为[1,3)的 元素赋值给新数组arr1

Arrays.asList()方法

该方法是将数组转化为List的集合的方法。
Arrays.asList(arr);
注意:

(1)该方法适用于对象型数据的数组(String、Interger…)
(2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean)
(3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新
(4)不支持add()、remove()、clear()等方法,得到的List不可改变,属于java.util.Arrays.ArrayList这个静态内部类,没有实现相应方法,只可用来遍历。