【Java】—— Java面向对象基础:java中自定义数组操作工具类 - MyArrays

        在Java开发中,数组作为一种基础的数据结构,经常需要进行各种操作,如求最大值、最小值、平均值、遍历、排序、反转、查找等。为了方便这些操作,我们可以自定义一个工具类MyArrays,将常用的数组操作封装进去。下面,我将详细介绍这个工具类的实现和使用。

MyArrays工具类概述

MyArrays类是一个用于操作int类型数组的工具类,提供了以下功能:

  • getMax(int[] arr):获取数组的最大值。
  • getMin(int[] arr):获取数组的最小值。
  • getSum(int[] arr):计算数组的总和。
  • getAvg(int[] arr):计算数组的平均值。
  • print(int[] arr):遍历并打印数组的元素。
  • copy(int[] arr):复制数组。
  • reverse(int[] arr):反转数组。
  • sort(int[] arr):对数组进行排序(默认从小到大)。
  • lineSearch(int[] arr, int target):线性查找指定的元素。

MyArrays类的定义

package com.zyj.example.exer4;

/**
 * ClassName:IntelliJ IDEA
 * Description:
 * 根据上一章的数组中常用算法操作,自定义一个操作int[] 的工具类
 * 涉及到的方法有:求最大值、最小值、总和、平均数、遍历数组、复制数组、数组反转、
 * 数组排序(默认从小到大排序)、查找等
 *
 * @Author zyjstart
 * @Create:2024/8/26 22:16
 */
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;
    }

    /**
     * 获取int[] 数组的最小值
     *
     * @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;
    }

    /**
     * 获取int[] 数组的总和
     *
     * @param arr 要统计总和的数组
     * @return 返回总和
     */
    public int getSum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    /**
     * 获取int[] 数组的平均值
     *
     * @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--) {
            // 交互arr[i] 与 arr[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++) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }

    /**
     * 使用线性查找指定的元素
     *
     * @param arr    待查找的数组
     * @param target 要查找的元素
     * @return target元素在数组中的位置,若未找到则返回-1
     */
    public int lineSearch(int[] arr, int target) {
        for (int i = 0; i < arr.length; i++) {
            if (target == arr[i]) {
                return i;
            }
        }

        // 只要代码执行到此位置一定是没找到
        return -1;
    }

}

MyArraysTest的定义

下面是一个简单的测试类MyArraysTest,用于演示如何使用MyArrays类:

public class MyArraysTest {
    public static void main(String[] args) {

        MyArrays arrs = new MyArrays();
        int[] arr =new int[]{33,-9,88,445,154,6547,66,31,-99,};

        // 求最大值
        System.out.println("最大值为:" + arrs.getMax(arr));
        // 求最小值
        System.out.println("最小值为:" + arrs.getMin(arr));
        // 求平均值
        System.out.println("平均值为:" + arrs.getAvg(arr));
        // 遍历
        arrs.print(arr);
        // 查找
        int index = arrs.lineSearch(arr, 31);
        if (index>=0){
            System.out.println("找到了,位置为:" + index);
        }else{
            System.out.println("未找到");
        }
        // 排序
        arrs.sort(arr);
        // 遍历
        System.out.print("排序之后:");
        arrs.print(arr);

        // 反转
        arrs.reverse(arr);
        // 遍历
        System.out.print("反转之后:");
        arrs.print(arr);

    }
}

运行输出结果

        通过这个工具类的使用,我们可以简化对数组的操作,提高代码的可读性和可维护性。在实际项目中,可以根据需要对这个工具类进行扩展,添加更多的功能和方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值