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位开始

 

转载于:https://www.cnblogs.com/zhangxiong-tianxiadiyi/p/10732580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值