Java 实现Arrays 数组工具类

Class Arrays

是 java 工具包自带的非常强大的数组工具类,今天手工实现了一部分功能,部分参考实现如下

public class MyArrays {
    //最大值

    /**
     * 获取int数组最大值
     *
     * @param arr:代遍历的数组
     * @return 数组最大值
     */
    public int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        return max;
    }

    /**
     * 获取数组最小值
     *
     * @param arr 代遍历数组
     * @return 数组最小值
     */
    public int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        return min;
    }

    /**
     * 求数组元素和
     *
     * @param arr 待遍历数组
     * @return 数组元素和
     */
    public int getSUm(int[] arr) {
        int sum = arr[0];
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    /**
     * 求数组元素均值
     *
     * @param arr 待遍历数组
     * @return 数组均值
     */
    public int getAvg(int[] arr) {
        return getSUm(arr) / arr.length;
    }

    /**
     * 遍历数组
     *
     * @param arr
     */
    public void print(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == 0) {
                System.out.print(arr[i]);
            } else {
                System.out.print("," + +arr[i]);
            }
        }
        System.out.println("]");
    }

    /**
     * 数组复制
     *
     * @param arr
     * @return
     */
    public int[] copy(int[] arr) {
        int[] newArr = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        return newArr;
    }

    /**
     * 数组反转
     *
     * @param arr
     */
    public void reverse(int[] arr) {
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }

    /**
     * 数组排序
     *
     * @param arr
     */
    public void sort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

    /**
     * 自定义排序顺序 冒泡排序
     *
     * @param arr
     * @param n
     */
    public void sort(int[] arr, String method) {
        if ("asc".equals(method)) {
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1 - i; j++) {

                    if (arr[j] > arr[j + 1]) {
                        swap(arr, j, j + 1);
                    }
                }
            }
        } else if ("desc".equals(method)) {
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] < arr[j + 1]) {
                        swap(arr, j, j + 1);
                    }
                }
            }
        } else {
            System.out.println("排序规则有误!");
        }
    }

    /**
     * 数组元素交换
     *
     * @param arr 数组
     * @param i   待交换元素 i
     * @param j   待交换元素 j
     */
    private void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }


    /**
     * 线性查找指定值
     *
     * @param arr   数组
     * @param value 查找值
     * @return:-1 表示未找到,否则就返回索引值
     */
    public int linearSearch(int[] arr, int value) {
        for (int i = 0; i < arr.length; i++) {
            if (value == arr[i]) {
                return i;
            }
        }
        //代码执行到这里即为 数组中未查询到制定值
        return -1;
    }
}

测试类

public class MyArraysTest {
    public static void main(String[] args) {
        MyArrays myArrays = new MyArrays();
        int[] arr = {1, 33, 88, 0, -1, 76};

        System.out.println(myArrays.getMax(arr));
        System.out.println(myArrays.getAvg(arr));
        System.out.println(myArrays.linearSearch(arr, 8));
        myArrays.sort(arr,"desc");
        myArrays.print(arr);
    }
}
posted @ 2023-04-18 09:42  晓枫的春天  阅读(103)  评论(0编辑  收藏  举报