1. 简介
Arrays类包含用于操作数组的各种方法(例如排序和搜索)。此类还包含一个静态工厂,允许将数组视为列表。
如果指定的数组引用为null,则此类中的方法都抛出NullPointerException,除非另有说明。
2. 方法说明
List<T> asList(T... a):返回由指定数组构成的大小固定的列表,该列表不能使用add和remove方法改变长度
int binarySearch(Object[] a, Object key):使用二分查找元素的索引
T[] copyOfRange(T[] original, int from, int to):复制数组,并且指定开始/结束索引
T[] copyOf(T[] original, int newLength):复制数组,并且指定复制长度
void fill(Object[] a, Object val):使用指定元素填充数组
void fill(Object[] a, int fromIndex, int toIndex, Object val):使用指定数组填充数组,并且指定填充的开始/结束索引
void sort(Object[] a):对数组排序,需要实现数组元素的Comparable接口
void sort(Object[] a, int fromIndex, int toIndex):对指定开始/结束索引的数组排序,需要实现数组元素的Comparable接口
void sort(T[] a, Comparator<? super T> c):对数组排序,需要实现数组元素的Comparator接口
void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c):对指定开始/结束索引的数组排序,需要实现数组元素的Comparator接口
String toString(Object[] a):数组转字符串
3. 简单示例
1 /* 2 *二分查找仅适用于有序的数组 3 * */ 4 5 import java.util.*; 6 public class ArraysFunc { 7 public static void main(String[] args){ 8 9 String[] arr1 = new String[]{"a","b","b","d","c"}; 10 11 //数组转列表,不能使用add和remove方法改变list的长度 12 List<String> list1 = Arrays.asList(arr1); 13 System.out.println(list1); // [a, b, b, d, c] 14 15 //使用二分查找元素索引,发现索引不是1 16 int index = Arrays.binarySearch(arr1,"b"); 17 System.out.println(index); // 2 18 19 // 复制指定开始/结束位置的数组(不包含结尾) 20 String[] arr2 = Arrays.copyOfRange(arr1, 1,3); 21 System.out.println(Arrays.asList(arr2)); // [b, b] 22 23 //复制指定长度的数组(索引从0开始) 24 String[] arr3 = Arrays.copyOf(arr1,3); 25 System.out.println(Arrays.asList(arr3)); // [a, b, b] 26 27 // 判断数组是否等价 28 boolean flag1 = Arrays.equals(arr1,arr2); 29 System.out.println(flag1); // false 30 31 // 对数组填充指定元素,可指定范围(不包含结尾) 32 Arrays.fill(arr3,"e"); 33 System.out.println(Arrays.asList(arr3)); // [e, e, e] 34 Arrays.fill(arr3,0,2,"f"); 35 System.out.println(Arrays.asList(arr3)); // [f, f, e] 36 37 // 对数组排序 38 Arrays.sort(arr1); 39 System.out.println(Arrays.asList(arr1)); // [a, b, b, c, d] 40 41 // 将数组变成字符串,保留完整符号 42 String str1 = Arrays.toString(arr1); 43 System.out.println(str1); // [a, b, b, c, d] 44 45 } 46 }
4. 说明
4.1 使用Arrays.binarySearch()方法时,需要注意数组要是有序的,否则将会无法得到自己想要的结果。
这是由于该方法使用二分查找法实现。
4.2 使用Arrays.sort()方法时,对于自定义元素需要实现Comparable或者Comparator接口。
关于两接口的实现参考如下:https://www.cnblogs.com/jfl-xx/p/10656433.html
!!!