在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);
}
}
运行输出结果
通过这个工具类的使用,我们可以简化对数组的操作,提高代码的可读性和可维护性。在实际项目中,可以根据需要对这个工具类进行扩展,添加更多的功能和方法。