import java.util.Arrays;
public class Array1 {
//初始化设置
private int[] data;
private int size;
private int capace=12;
public Array1(int capace) {
//健壮性进行判断
if (capace<=0) {
data=new int[this.capace];
}else {
data=new int[capace];
}
this.size=0;
}
public Array1() {
this(10);
}
//获取数组元素的长度
public int getSize() {
return size;
}
//判断数组是否为空
public boolean isEmaty() {
return size==0;
}
//指定位置插入元素
public void addIndex(int index,int e) {
//先判断是否扩容
if (size==data.length) {
resize(2*data.length);
}
//判断异常处理
if (index<0 || index>size) {
throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size.");
}
//在需要插入的元素索引的后边元素依次向后移动一位
for(int i=size-1;i>=index;i--) {
data[i+1]=data[i];
}
data[index]=e;
//增加元素
size++;
//判断增加后的元素是否超过了当前的size,超过就扩容
if (size==data.length) {
resize(2*data.length);
}
}
//第一个位置插入元素
public void addFirst(int e ) {
addIndex(0, e);
}
//最后一个位置插入元素
public void addLast(int e) {
addIndex(size, e);
}
//获取元素下标
public int getId(int e) {
for (int i = 0; i < size; i++) {
if (data[i]==e) {
return i;
}
}
return -1;
}
//修改指定位置的元素
public void set(int index,int e) {
data[index]=e;
}
//查找数组是否包含需要查找的元素
public int find(int e ) {
for (int i = 0; i < size; i++) {
if (data[i]==e) {
return i;
}
}
return -1;
}
//删除元素
public void remove(int index) {
//异常进行判断
int ret =data[index];
if (index<0 || index >size) {
throw new IllegalArgumentException("");
}
for (int i = index+1; i <=size; i++) {
data[i-1]=data[i];
}
size--;
//判断缩容
if (size==data.length/2-1) {
dlresize();
}
System.out.println("删除的元素为"+ret);
}
//删除第一个元素
public void removeFirst() {
remove(0);
}
//删除最后一个元素
public void removeLast() {
remove(size);
}
//数组扩容
public void resize(int lengths) {
int[] newData=new int[lengths];
for (int i = 0; i < data.length; i++) {
newData[i]=data[i];
}
data=newData;
}
//数组缩容
public void dlresize() {
int[] newData=new int[data.length/2];
for(int i=0;i<newData.length;i++) {
newData[i]=data[i];
}
data=newData;
}
@Override
public String toString() {
return "Array1 [data=" + Arrays.toString(data) + ", size=" + size + "]";
}
public static void main(String[] args) {
Array1 listArray1=new Array1();
listArray1.addFirst(11);
listArray1.addIndex(1, 22);
listArray1.addIndex(2, 33);
listArray1.addIndex(3, 44);
listArray1.addIndex(4, 55);
listArray1.addLast(66);
listArray1.set(3, 99);
System.out.println(listArray1.find(55));
//listArray1.remove(2);
//System.out.println(listArray1.getId(22));
System.out.println(listArray1);
}
}
https://www.cnblogs.com/raichen/p/5671637.html