Arrays 三种基本常用法

一:背景

        jdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作。例如快速输出、排序、查找等

二:

import java.util.Arrays;      //(需要引用class里面的Arrays)

public class Test02{

    public static void main(String[] args){

      

       int[] arr = {4,2,3,1};

       // 【1】数组的字符串形式

       String str = Arrays.toString(arr);

       System.out.println(str);

 

      

       // 【2】sort对数组排序(只能升序)-> 内部使用快速排序

     

 Arrays.sort(arr);

       System.out.println(Arrays.toString(arr));

 

      

       // 【3】fill 填充数组

     

 //Arrays.fill(arr,0);

        //System.out.println(Arrays.toString(arr));

 

      

       // 【4】equals(arr1,arr2) 判断两个数组是否相等。

       // 数组相等的条件:a.长度相等 b.对应位置元素相等。

    

  int[] arr2 = {1,2,3};

        System.out.println(Arrays.equals(arr,arr2));

    }

}

 

 三:二分法查找法(以下源码可以在jdk中找到)

        

private static int binarySearch0(long[] a, int fromIndex, int toIndex,

                                     long key) {

        int low = fromIndex;

        int high = toIndex - 1;

 

        while (low <= high) {

            int mid = (low + high) >>> 1;

            long midVal = a[mid];

 

            if (midVal < key)

                low = mid + 1;

            else if (midVal > key)

                high = mid - 1;

            else

                return mid; // key found

        }

        return -(low + 1);  // key not found.

    }

 

上图是二分法和冒泡法比较图,还是可以明确看出运行效率的!!

**二分法查找必须是有序的数组,如果找到返回索引;如果没有找到,返回-插入点-1。插入点就是key应该放到数组的位置

四:数组的复制

         copyOf(arr,len) 把arr复制len个长度的元素并返回新数组。如果len>arr.length,新数组的长度末尾用0填充。

          copyOfRange(arr,from,to) 从arr中from(包含)位置开始复制到to(不包含)这个范围的元素到新数组中。含头不含尾

       举例:

      

 int []arr={1,3,4,6,8};
    
       int [] arr2=Arrays.copyOf(arr,6);
       System.out.println(Arrays.toString(arr2));
       //把第一个数组的元素复制到第二个数组
       
       int[] arr3=Arrays.copyOfRange(arr,1,3);
       System.out.println(Arrays.toString(arr3));
       //把第一个数组的一段元素(1到3位元素,不包括第3位)复制到第三个数组
       
       int [] arr4=new int[arr.length];
       System.arraycopy(arr,1,arr4,2,2);
       System.out.println(Arrays.toString(arr4));
       //把第一个数组从1位的两个元素复制到第四个数组的2位开始

 

posted @ 2019-04-18 21:35  c++天下第一  阅读(944)  评论(0编辑  收藏  举报