在java编程中,有一些针对数组的操作需要经常使用,但是系统又不提供现成的让用户可以直接调用。所以,总是需要用户进行手写。
在这里,对于java编程中经常用到的一些数组操作,进行了总结,并封装进一个自定义数组工具类中:
主要包含的操作有:
求数组元素的最大值、最小值、和、平均值
反转数组
对数组进行排序(冒泡排序)
遍历数组
在数组中查找指定元素(线性查找)
具体的代码实现如下:
/*
* 自定义数组的工具类
*
*/
public class ArrayUtil {
// 求数组的最大值
public int getMax(int[] arr) {
int maxValue = arr[0];
for(int i=1;i<arr.length;i++) {
if(maxValue < arr[i]) {
maxValue = arr[i];
}
}
return maxValue;
}
// 求数组的最小值
public int getMin(int[] arr) {
int minValue = arr[0];
for(int i=1;i<arr.length;i++) {
if(minValue > arr[i]) {
minValue = arr[i];
}
}
return minValue;
}
// 求数组的总和
public int getSum(int[] arr) {
int sum = 0;
for(int i=0;i<arr.length;i++) {
sum += arr[i];
}
return sum;
}
// 求数组的平均值
public int getAvg(int[] arr) {
//直接在方法中调用方法?
return getSum(arr) / arr.length;
}
// 反转数组
public void reverse(int[] arr) {
for(int i=0;i<arr.length/2;i++) {
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
// 复制数组
/**
* 注意:这里的方法的返回值是,复制得到的数组的首地址
* @param arr
* @return
*/
public int[] copy(int[] arr) {
int[] arr1 = new int[arr.length];
for(int i=0;i<arr1.length;i++) {
arr1[i] = arr[i];
}
return arr1;
}
// 数组排序----从小到大排列
public void sort(int[] arr) {
//冒泡排序
for(int i=0;i<arr.length-1;i++) {
//外层循环表示,一共进行的趟数,比总的数组元素数少1
for(int j=0;j<arr.length-1-i;j++) {
/*
* 内层循环:第i趟,表示已经有i个元素确定好了位置(在数组的最后的地方存储)
* 而且,第i趟,最后比较的是倒数第i+1与倒数第i+2个元素的值
*/
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// 遍历数组
public void print(int[] arr) {
for(int i= 0;i<arr.length;i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
}
// 查找指定元素
public int getIndex(int[] arr,int dest) {
//假设数组没有序,用线性查找
int i;
// for(i=0;i<arr.length;i++) {
// if(arr[i] == dest) {
// System.out.println("找到了指定元素,位置为" + i +"(元素的索引)");
// break;
// }
// }
// if(i == arr.length) {
// System.out.println("找不到需要查找的元素!");
// }
//简化一下
for(i=0;i<arr.length;i++) {
if (arr[i] == dest) {
return i;//直接返回下标值,因为return有结束方法的作用
}
}
return -1;//返回一个负值,表示没有找到
}
}
学习java面向对象的第3天,加油!
坚持学习,坚持敲代码!