array方法有哪些(Arrays类)
导读:Arrays类 一、Arrays类常见方法...
Arrays类
一 、Arrays类常见方法
Arrays里面包含了一系列静态方法 ,用于管理或操作数组(比如排序和搜索) 。
toString 返回数组的字符串形式
Arrays.toString(arr)
sort排序(自然排序和定制排序)
import java.util.Arrays; import java.util.Comparator; public class ArraysMethod01 { public static void main(String[] args) { //演示 toString方法的使用 Integer[] integers = {1,2,5}; //遍历数组 // for (int i = 0; i < integers.length; i++) { // System.out.println(integers[i]); // } //直接使用Arrays.toString方法 ,显示数组 System.out.println(Arrays.toString(integers)); //演示 sort方法的使用 Integer[] arr = {1,-1,0,8,7,98}; // Arrays.sort(arr);//默认排序方法 //1. 可以直接使用冒泡排序 ,也可以直接使用Arrays提供的sort方法排序 //2. 因为数组是引用类型 ,所以通过sort排序后 ,会直接影响到实参 arr //3. sort重载的 ,也可以通过传入一个接口 Comparator 实现定制排序 //4. 调用 定制排序 时 ,传入两个参数 (1) 排序的数组 arr // (2) 实现了 Comparator接口的匿名内部类 ,要求实现 compare方法 //5. 这里体现了接口编程的方式 ,看看源码 //(1) Arrays.sort(arr,new Comparator(){...}); //(2) 最终到 TimSort类的 private static <T> void binarySort(T[] a, int lo, int hi, int start, // Comparator<? super T> c){} //(3) 执行到 binarySort方法的代码 ,会根据动态绑定机制 c.compare()执行我们传入的 // 匿名内部类的 compare() // while (left < right) { // int mid = (left + right) >>> 1; // if (c.compare(pivot, a[mid]) < 0) // right = mid; // else // left = mid + 1; // } //(4)new Comparator() { // @Override // public int compare(Object o1, Object o2) { // Integer i1 = (Integer) o1; // Integer i2 = (Integer) o2; // return i2 - i1; // } // } //(5) public int compare(Object o1, Object o2) 返回的值 >0 还是 <0 // 会影响整个排序结果 ,这就充分体现了 接口编程 + 动态绑定 + 匿名内部类的综合使用 // 将来的底层框架和源码的使用方式 ,会非常常见 //定制排序 Arrays.sort(arr, new Comparator() { @Override public int compare(Object o1, Object o2) { Integer i1 = (Integer) o1; Integer i2 = (Integer) o2; return i2 - i1; } }); System.out.println("=====排序后====="); System.out.println(Arrays.toString(arr)); } } //运行结果: /*[1, 2, 5] =====排序后===== [98, 8, 7, 1, 0, -1] */binarySearch 通过二分搜索进行查找,要求必须排好序
int index = Arrays.binarySearch(arr,568);
copyOf 数组元素的复制
Integer[] newArr = Arrays.copyOf(arr,arr.length);
fill 数组元素的填充
Integer[] num = new Integer[]{9,3,2}; Arrays.fill(num,99);equals 比较两个数组元素内容是否完全一致
boolean equals = Arrays.equals(arr,arr2);
asList 将一组值 ,转换成list
List<Integer> asList = Arrays.asList(2,3,4,5,6,1); System.out.println("asList = " + asList); import java.util.Arrays; import java.util.List; public class ArraysMethod02 { public static void main(String[] args) { Integer[] arr = {1,2,90,123,567}; //(1) binarySearch 通过二分收搜索法进行查找 ,要求必须排好的 //1. 使用 binarySearch 二叉查找 //2. 要求该数组必须是有序的,如果该数组时无序的 ,不能使用binarySearch //3. 如果数组中不存在该元素 ,就返回 return -(low + 1); //low 是该元素如果存在应该在的位置 下面 568 对应的 low 就是 5 ,所以返回-6 int index = Arrays.binarySearch(arr,568); System.out.println("index = " + index); //(2) copyOf 数组元素的复制 //1. 从arr数组中 ,拷贝 arr.length - 1 个元素到 newArr 数组中 //2. 如果拷贝的长度 > arr.length 就在新数组的后面 增加 null //3. 如果拷贝长度 < 0 就抛出异常 NegativeArraySizeException //4. 该方法的底层使用的是 System.arraycopy() Integer[] newArr = Arrays.copyOf(arr,arr.length-1); Integer[] newArr2 = Arrays.copyOf(arr,arr.length + 1); // Integer[] newArr3 = Arrays.copyOf(arr,-1); //这里会抛出异常 System.out.println("=======拷贝执行完毕后========="); System.out.println(Arrays.toString(newArr)); System.out.println(Arrays.toString(newArr2)); //(3) fill 数组元素的填充 //使用 99 去填充 num数组 ,可以理解成是替换原来的数组元素 Integer[] num = new Integer[]{9, 3, 2}; Arrays.fill(num,99); System.out.println("======num数组填充后========"); System.out.println(Arrays.toString(num)); //(4) equals 比较两个元素内容是否完全一致 Integer[] arr2 = {1, 2, 90, 123}; //1. 如果 arr 和 arr2 数组元素一样 ,则方法返回true //2. 如果不是完全一样 ,就返回 false boolean equals = Arrays.equals(arr, arr2); System.out.println("equals = " + equals); //(5) asList 将一组值 ,转换成list //1. asList方法 ,会将 (2,3,4,5,6,1)数据转成一个List集合返回 //2. asList 编译类型 List(接口) // 运行类型 java.util.Arrays#ArrayList 即Arrays的静态内部类 List asList = Arrays.asList(2, 3, 4, 5, 6, 1); System.out.println("asList = " + asList); System.out.println("asList的运行类型" + asList.getClass()); } } //运行结果: /* index = -6 =======拷贝执行完毕后========= [1, 2, 90, 123] [1, 2, 90, 123, 567, null] ======num数组填充后======== [99, 99, 99] equals = false asList = [2, 3, 4, 5, 6, 1] asList的运行类型class java.util.Arrays$ArrayList */创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!