数组

Java 语言中提供的数组是用来存储固定大小的同类型元素 。可以通过下标对数组元素进行随机访问。由于数组大小固定,故增加和删除元素时需要创建一个新的数组,移动原数组到新数组,时间复杂度为O(n)。

初始化

动态初始化:

int[] arr = new int[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;

静态初始化:

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

长度

由于数组长度是固定的,直接使用length获取数组长度:

public static int getLength(Object[] arr){
        return arr.length;
    }

查询

查找指定下标元素:

public static Object getWithIndex(Object[] arr, int index){
        if (index > arr.length - 1 || index < 0) {
            throw new RuntimeException("下标越界");
        }
        return arr[index];
    }

线性查找指定元素的下标:

public static int linearSearch(Object[] arr, Object element){
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if (element.equals(arr[i])){
                index = i;
                break;
            }
        }
        return index;
    }

增加

在数组末尾增加一个元素:

public static Object[] addToLast(Object[] arr, Object element){
        Object[] newArr = new Object[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        newArr[arr.length] = element;
        return newArr;
    }

在数组指定位置增加一个元素:

public static Object[] addWithIndex(Object[] arr, Object element, int index){
        if (index > arr.length || index < 0) {
            throw new RuntimeException("下标越界");
        }
        Object[] newArr = new Object[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            if (i < index){
                newArr[i] = arr[i];
            } else {
                newArr[i + 1] = arr[i];
            }
        }
        newArr[index] = element;
        return newArr;
    }

删除

删除数组最后一个元素:

public static Object[] deleteLast(Object[] arr){
        if (arr.length == 0){
            throw new RuntimeException("下标越界");
        }
        Object[] newArr = new Object[arr.length - 1];
        for (int i = 0; i < arr.length - 1; i++) {
            newArr[i] = arr[i];
        }
        return newArr;
    }

删除数组指定位置元素:

public static Object[] deleteWithIndex(Object[] arr, int index){
        if (index > arr.length - 1 || index < 0) {
            throw new RuntimeException("下标越界");
        }
        Object[] newArr = new Object[arr.length - 1];
        for (int i = 0; i < newArr.length; i++) {
            if (i < index){
                newArr[i] = arr[i];
            } else {
                newArr[i] = arr[i + 1];
            }
        }
        return newArr;
    }

Arrays

java.util.Arrays 类能方便地操作数组,常用的静态方法有:

  • toString():将数组转换为String。
  • fill():给数组赋予一个相同的值。
  • sort():按升序排序,使用双基准快速排序(Dual-Pivot Quicksort)算法,时间复杂度为O(n log(n)) 。
  • equals() :比较数组中元素值是否相等。
  • binarySearch() :对排序好的数组使用二分查找法查找。
  • copyOf():拷贝数组到指定长度的新数组,如果新数组长度大于原数组,则用0填充,实际调用的是System.arraycopy()方法。
  • copyOfRange():拷贝原数组指定索引范围(包括起点,不包括终点)数据到新数组,实际调用的是System.arraycopy()方法。

欢迎关注我的公众号,一起学习技术。

你可能感兴趣的:(java)