数组首先本身就是一个数据结构,在Java中ArrayList就是一个基于数组而实现的非常好用的工具,这里我就是对数组实现了一些简单的封装,让我们的数组拥有了一些简单的增删改查的功能。
源码贴出~
package com.array;
/**
* java数据结构与算法----数组
* 数组本身就是一种数据结构,这里是对数组的简单封装
* @author **
*
*/
public class Array {
private int[] arr ;
private int index=0;
private int allsize=0;//定义数组大小
/**
* 构造方法初始化数组
* @param size 数组的大小
*/
public Array(int size) {
allsize=size;
arr= new int[allsize];
}
/**
* 插入一条数据
* @param data 数据值
*/
public void insert(int data){
arr[index]=data;
index++;//每当插入一条数据之后就让下标加一
}
/**
* 查找某个值对应的索引
* @param val 值
* @return i 索引,返回-1代表没找到
*
*/
public int find(int val){
// 顺序查找,若想采用二分查找则数组必须是有序的
for (int i = 0; i < getSize(); i++) {
if(arr[i]==val)
return i;
}
return -1;
}
/**
* 删除指定的值
* @param val 需要删除的值
* @return 是否删除成功
*/
public boolean deleteVal(int val){
boolean f=false;
int index=find(val);
if(index==-1)
return f;
else{
for (int i = index; i < arr.length-1; i++) {
arr[i]=arr[i+1];
}
allsize=arr.length-1;//删除之后数组的实际大小并没有变化,这里定义一个allsize让大小看起来变小了
f=true;
}
return f;
}
/**
*删除下标索引对应的数组元素
* @param index 下表索引
* @return 是否删除成功
*/
public boolean deleteIndex(int index){
boolean f=false;
if(index<0||index>=getSize())
return f;
else{
for (int i = index; i < arr.length-1; i++) {
arr[i]=arr[i+1];
}
allsize=allsize-1;//删除之后数组的实际大小并没有变化,这里定义一个allsize让大小看起来变小了
f=true;
}
return f;
}
/**
* 返回一个看起来变化了的大小
* @return
*/
public int getSize(){
return allsize;
}
/**
* 接受索引号和值进行修改
* @param index 索引号
* @param val 值
* @return 是否修改成功
*/
public boolean update(int index,int val){
boolean f =false;
if(index>=0&&index<getSize()){
arr[index]=val;
}
return f;
}
/**
* 打印全部数据
*/
public void viewAll(){
for (int i = 0; i <getSize(); i++) {
System.out.print(arr[i]+" ");
}
}
public static void main(String[] args) {
Array a = new Array(10);
for(int i=0;i<10;i++)
a.insert(i);
a.deleteVal(5);
a.deleteIndex(5);
a.update(2, 15);
System.out.println(a.find(9));
a.viewAll();
}
}