package SQL01Demo;
public class Array<E>{
private E[] data;
private int size;
//构造函数,传入数组的容量capacity构造Array
public Array(int capacity){data=(E[]) new Object[capacity];size=0;}
//无参数的构造函数,默认数组的容量capacity=10
public Array(){
this(10);//这里使用的this用来调用上面的构造方法
}
//获取数组的容量
public int getCapacity(){return data.length;}
//获取数组中的元素个数
public int getSize(){return size;}
//返回数组是否为空
public boolean isEmpty(){returnsize==0;}
//在index索引位置插入一个新元素
public void add(int index,E e){if(size==data.length){
throw new IllegalArgumentException("Add failed,Array is full");}if(size>size||index<0){
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++;}}
//在所有元素前添加一个元素
public void addFirst(E e){
add(0,e);}
//向所有元素后添加一个元素
public void addLast(E e){
add(size,e);}
//获取index索引的位置
public E get(int index){if(size>size||index<0){
throw new IllegalArgumentException("Get Failed,index is illegal");}return data[index];}
//修改index索引位置的元素e
public void set(int index, E e){if(size>size||index<0){
throw new IllegalArgumentException("Get Failed,index is illegal");}
data[index]=e;}
//从数组中删除index位置的元素,返回删除的元素
public E remove(int index){if(size>size||index<0){
throw new IllegalArgumentException("Remove Failed,index is illegal");}
E ret=data[index];for(int i = index+1; i <size ; i++){
data[i-1]=data[i];
size--;}return ret;}
//从数组中删除第一个元素,返回删除的元素
public E removeFirst(){return remove(0);}
//从数组中删除最后一个元素,返回删除的元素
public E removeLast(){return remove(size-1);}
//从数组中删除元素
public void removeElement(E e){
int index=find(e);if(index!=-1){
remove(index);}}
//查找数组中是否有元素e
public boolean contains(E e){for(int i =0; i <size ; i++){if(data[i].equals(e))returntrue;}returnfalse;}
//查找数组中元素e所在索引,如果不存在元素e则返回-1
public int find(E e){for(int i =0; i <size ; i++){if(data[i].equals(e))return i;}return -1;}
@Override
public String toString(){
StringBuilder res=new StringBuilder();
res.append(String.format("Array:size=%d,capacity=%d\n",size,data));
res.append('【');for(int i =0; i <size ; i++){
res.append(data[i]);if(i!=size-1){
res.append(",");}
res.append('】');}return res.toString();}
// 将数组空间的容量变成newCapacity大小
private void resize(int newCapacity){
E[] newData =(E[])new Object[newCapacity];
for(int i =0; i < size ; i ++)
newData[i]= data[i];
data = newData;}}
package SQL01Demo;
public class Main {
public static void main(String[] args){
Array arr=new Array(20);for(int i =0; i <10; i++){
arr.addLast(i);
System.out.println(arr);
System.out.println("-------");
arr.add(1,100);
System.out.println(arr);
System.out.println("-------");
arr.addFirst(-1);
System.out.println(arr);}}}