java中Arrays的常用方法

Arrays的常用方法

         Array中的方法

int[] arr = {4,23,75,34,6,432};

         1.基础数据类型默认值为它的数据类型对应的默认值

     int[] i2 = new int[6];

     double[] d = new double[3];

     char[] c = new char[3];

     boolean[] b = new boolean[3];

     System.out.println(Arrays.toString(i2));  //[0, 0, 0, 0, 0, 0]

     System.out.println(Arrays.toString(d));  //[0.0, 0.0, 0.0]

     System.out.println(Arrays.toString(c));  //[ , , ]

     System.out.println(Arrays.toString(b));  //[false, false, false]

    

         2.引用数据类型,默认为null

     String[] s1 = new String[5];

     StringTest[] s2 = new StringTest[3];

     System.out.println(Arrays.toString(s1));  //[null, null, null, null, null]

     System.out.println(Arrays.toString(s2));  //[null, null, null]

 

         3.Array中的方法(不常用)

     Class clazz = Class.forName("java.lang.String");

     //newInstance 通过反射获取到class创建数组 jdk9后不建议使用

     Object newInstance = Array.newInstance(clazz, 3);

     //set 设置数组中的值

     Array.set(newInstance, 1, "hello");

     //get 获取到数组中的值,注意数据类型要和数组中一致

     Object object = Array.get(newInstance, 1);

     System.out.println(object);  //hello

    

     System.out.println("----------------------------");

    

    

     /**

          * Arrays的方法 

      */

    

          4.asList 把数组转为集合,注意此集合为arrays的内部类

    

     //基本数据类型是无法泛型化的,所以int的数组返回的是个包含数组的集合

     List<int[]> asList = Arrays.asList(arr);

     Iterator<int[]> iterator = asList.iterator();

     while (iterator.hasNext()) {

     System.out.println(Arrays.toString(iterator.next()));  //[4, 23, 75, 34, 6, 432]

     }

     System.out.println("---------------------");

    

    

     Integer[] arr2 = {4,23,75,34,6,432};

     //注意:此时返回的listArrays的内部类,不是java.util.ArrayList,没有add,remove等方法

     List<Integer> asList2 = Arrays.asList(arr2);

     System.out.println(asList2);  //[4, 23, 75, 34, 6, 432]

     arr2[0] = 999;

     //返回的这个list指向的还是原数组

     System.out.println(asList2);  //[999, 23, 75, 34, 6, 432]

    

    

    

     List<Integer> list = new ArrayList<Integer>(Arrays.asList(arr2));

     System.out.println(list);  //[999, 23, 75, 34, 6, 432]

     list.add(11);

     list.add(22);

     System.out.println(list);  //[999, 23, 75, 34, 6, 432, 11, 22]

    

     System.out.println("-------------------------");

    

         5.binarySearch 二分法查找有序数组中的元素

     Arrays.sort(arr2);

     System.out.println(Arrays.toString(arr2));  //[6, 23, 34, 75, 432, 999]

     int binarySearch = Arrays.binarySearch(arr2,432);

     System.out.println(binarySearch);  //4

    

    

         6.copyOf 从0开始复制固定长度的数组,如果长度超过数组长度添加默认值到后面(0,false,null...)

     Integer[] copyOf = Arrays.copyOf(arr2, 3);

     System.out.println(Arrays.toString(copyOf));  //[6, 23, 34]

   System.out.println(Arrays.toString(Arrays.copyOf(arr2, 7)));  //[6, 23, 34, 75, 432, 999, null]

    

    

         7.copyOfRange(arr2, 1, 4) 从1开始复制4-1 长度为3的数组,数组长度超过同上

     Integer[] copyOfRange = Arrays.copyOfRange(arr2, 1, 4);

      System.out.println(Arrays.toString(copyOfRange));  //[23, 34, 75]

    

         8.equals 两个完全一样的数组返回true,但都为空时返回false,只能比较一维数组

     int[] arr3 = {4,23,75,34,6,432};

     boolean equals = Arrays.equals(arr, arr3);

     System.out.println(equals);  //true

    

     9.deepEquals 比较多维数组,基本数据类型的一维数组不能使用此方法

     int[][] arr4 = {{75, 432, 999},{75, 432, 999},{75, 432, 999}};

     int[][] arr5 = {{75, 432, 999},{75, 432, 999},{75, 432, 999}};

     boolean deepEquals = Arrays.deepEquals(arr5, arr4);

     System.out.println(deepEquals);  //true

     boolean equals2 = Arrays.equals(arr5, arr4);

     System.out.println(equals2);  //false

    

     System.out.println("-------------------------------");

    

         10.deepToString  多维数组的toString方法

     String deepToString = Arrays.deepToString(arr5);

     String string = Arrays.toString(arr5);

     System.out.println(deepToString);  //[[75, 432, 999], [75, 432, 999], [75, 432, 999]]

     System.out.println(string);  //[[I@6d06d69c, [I@7852e922, [I@4e25154f]

    

         11.deepHashCode  多维数组的hashCode

     int hashCode5 = Arrays.hashCode(arr5);

     System.out.println(hashCode5);  //651912296

     int hashCode4 = Arrays.hashCode(arr4);

     System.out.println(hashCode4);  //-554115814

    

     int deepHashCode5 = Arrays.deepHashCode(arr5);

     System.out.println(deepHashCode5);  //115472992

     int deepHashCode4 = Arrays.deepHashCode(arr4);

     System.out.println(deepHashCode4);  //115472992

    

         12.fill 将指定的值分配给指定的数组的每个元素。

     int[] arr6 = {4,23,75,34,6,432};

     Arrays.fill(arr6, 11);

     System.out.println(Arrays.toString(arr6));  //[11, 11, 11, 11, 11, 11]

    

     //fill(arr7,2,5,11)  将指定的值分配给指定的数组的指定范围的每个元素。

     int[] arr7 = {4,23,75,34,6,432};

     Arrays.fill(arr7,2,5,11);

     System.out.println(Arrays.toString(arr7));  //[4, 23, 11, 11, 11, 432]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值