写一个JAVA数组的工具类

其实说实话,不像其他语言那样,JAVA数组的应用是非常少的,JAVA有自己独特是collection接口(集合)基本完全代替了数组的功能,基本只有ArrayList的底层是用数组的,但是对于初学者来说,学好数组,了解这种数据结构。是非常重要的。以下为大家带来自己写一个数组的工具类,实现数组的,增查改删,以及冒泡排序和二分查找;

import java.util.Arrays;
/**
 * 数组工具类
 * @author Administrator
 *
 */
public class ArrCalcu {
/**
* 在数组最后一个位置增加一个元素
* @param arr 数组
* @param num 增加的元素
*/
public static int[] add(int[]arr,int num){
int[] arr1=new int[arr.length+1];
System.arraycopy(arr, 0, arr1, 0, arr.length);
arr1[arr.length]=num;
for(int ss:arr1){
System.out.println(ss);
}
return arr1;
}
/**
* 数组特定位置增加元素
* @param arr 数组
* @param index 插入位置
* @param num 插入数值
*/
public static int[] add(int[]arr,int index,int num){
int[]arr1=new int[arr.length+1];
System.arraycopy(arr, 0, arr1, 0, index);
arr1[index]=num;
System.arraycopy(arr, index, arr1, index+1,arr.length-index);
for(int ss:arr1){
System.out.println(ss);
}
return arr1;
}
/**
* 数组最后一个元素的删除
* @param arr 数组
*/
public static int[] delete(int[]arr){
int arr1[]=new int[arr.length-1 ];
System.arraycopy(arr, 0, arr1, 0, arr1.length);
for(int ss:arr1){
System.out.println(ss);
}
return arr1;
}//这里说明以下,当我们要删除数组内的数据时,最好从索引高位向索引地位进行,如果从高位向地位遍历数组进行删除,经常会应为索引引用的错误导致只删除了部分元素;
/**
* 数组特定数字元素的删除
* @param arr 数组
* @param searchNum 你想删除的数字
*/
public static int[] delete(int[]arr,int searchNum){
int arr1[]=new int[arr.length-1];
boolean isFind=false;
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]==searchNum) {
index=i;
isFind=true;
}
}
if (isFind) {
System.arraycopy(arr, 0, arr1, 0,index);
System.arraycopy(arr, index+1, arr1, index, arr.length-index-1);
}
else {
System.out.println("没有找到你想删除的数字");
}
for(int ss:arr1){
System.out.println(ss);
}
return arr1;
}
/**
* 修改数组的某个数字
* @param arr 数组
* @param searchNum 要修改的数字
* @param num 修改后的数字
*/
public static int[] modification(int[]arr,int searchNum,int num){
int arr1[]=new int[arr.length];
boolean isFind=false;
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]==searchNum) {
index=i;
isFind=true;
}
}
if (isFind) {
System.arraycopy(arr, 0, arr1, 0,index);
arr1[index]=num;
System.arraycopy(arr, index+1, arr1, index+1, arr.length-index-1);
}
else {
System.out.println("没有找到你想修改的数字");
}
for(int ss:arr1){
System.out.println(ss);
}
return arr1;
}

/**
* 数组元素的查找
* @param arr 数组
* @param num 查找的元素
*/
public static int search(int[]arr,int num){
boolean isFind=false;
for(int ss:arr){
if (ss==num) {
isFind=true;
System.out.println("找到了你想找的数");
}
}if (isFind==false) {
System.out.println("没找到你想找的数");
//System.out.println(isFind?"查到了":"没查到");三元运算符
}
return num;
}

/**
* 冒泡排序
* @param arr 数组
*/
public static int[] sort(int[]arr){
int len=arr.length;
boolean sorted=true;
for (int j = 0; j < len-1; j++) {
sorted=true;
for (int i = 0; i < len-j-1; i++) {
if (arr[i+1]<arr[i]) {
int temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;
}
}
if (sorted) {
break;
}
}
System.out.println(Arrays.toString(arr));
return arr;
}
/**
* 二分法查找
* @param arr 数组
* @param searchWord 查找的数字
*/
public static int[] binarySearch(int[] arr,int searchNum){
int start=0;
int end=arr.length-1;
Arrays.sort(arr);
while (start<=end) {
int mid=(start+end)/2;
if (searchNum==arr[mid]) {
System.out.println("找到你想要的数字,在"+mid+"位置");
break;
}
if (arr[mid]<searchNum) {
start=mid+1;
}
if (arr[mid]>searchNum) {
end=mid-1;
}
if (end<start) {
System.out.println("没有找到结果");
}
}
return arr;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值