常用数组工具类:java.util.Arrays

1、 对一个有序的数组进行二分查找,然后key在a数组中的下标。
如果key不存在,返回-[插入点]-1。 插入点的意思是,如果它存在,应该在数组的什么位置。
无论如何,不存在的下标是负数。
public static int binarySearch(int[] a,int key)
int index = Arrays.binarySearch(arr, 5);

2、复制一个数组,从original数组的[0]开始复制,新数组长度是newLength
public static int[] copyOf(int[] original,int newLength)
int[] arr1 = Arrays.copyOf(arr, 3);

3、 复制一个数组,从original数组的[from]开始复制,新数组长度:to-from
public static int[] copyOfRange(int[] original, int from, int to)
int[] arr1 = Arrays.copyOfRange(arr, 2, 4);

4、 比较两个数组是否相等
public static boolean equals(int[] a,int[] a2)
Arrays.equals(arr, arr2)

5、赋值,用val把a数组填满
public static void fill(int[] a,int val)
Arrays.fill(newArr,0);

6、 从小到大排序
public static void sort(int[] a)
Arrays.sort(newArr);

7、 输出,把数组的元素挨个拼接,构成一个字符串:[元素列表]
public static String toString(int[] a)
System.out.println(Arrays.toString(arr));

下面介绍一个System中有关数组的方法

  • public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
  • 为什么要在这里介绍他呢?
    • 因为上面的 public static int[] copyOfRange(int[] original, int from, int to)方法调用了他,下面的为copyOfRange方法的源码,我们可以看到,其实在里面copyOfRange有调用了System.arraycopy方法
//copyOfRange源码
public static int[] copyOf(int[] original, int newLength) {
    int[] copy = new int[newLength];
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}
public static void arraycopy(Object src,//源数组
                             int srcPos,//从原数组的那个下标开始复制
                             Object dest,//目标数组
                             int destPos,//目标数组从哪个下标开始存储
                             int length)//一共复制几个
//即从src[srcPos]开始复制,复制到目标数组dest[destPost]中,一共复制length
  • 常见用法:
    • 删除数组中的一个元素
    • 通常我们实现这个功能是使用循环,用后面的内容覆盖钓前面的内容,在将数组的长度标记-1
    • 例如
    int length= 5;//数组有效元素个数
    int index = 2;//删除下标为2的元素
    for (int i = index; i < length-1; i++) {
       arr[i] = arr[i+1];
    }
    
    • 下面我们使用arraycopy方法来完成
    System.arraycopy(arr, index +1,arr, index , length-index-1);
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值