定义ArryList接口
public interface ArryList {
public int size();
public Object get(int i);
public boolean isEmpty();
public boolean contains(Object o);
public int indexOf(Object o);
public void add(int i ,Object o);
public void add(Object o);
public void remove(int i);
public void remove(Object e);
public void replace(int i,Object e);
}
底层实现
public class RealizeArryList implements ArryList {
private Object[] elementData;
private int size;
LinerTable(){
this(4);
}
LinerTable(int initialCapacity) {
elementData =new Object[initialCapacity];
}
@Override
public int size() {
return size;
}
@Override
public Object get(int i) {
if( i<0||i>size-1)
{
throw new MyArrayIndexOutOfBoundsException("数组索引越界异常"+i);
}
return elementData[i];
}
@Override
public boolean isEmpty() {
return size==0 ;
}
@Override
public boolean contains(Object o) {
for(int i=0;i < size;i++)
{
if(elementData[i] == o)
return true;
}
return false;
}
@Override
public int indexOf(Object o) {
int i;
for( i=0;i< size;i++) {
if(elementData[i] == o)
break;
}
return i;
}
@Override
public void add(int i, Object o) {
if(i<0||i>size) {
throw new MyArrayIndexOutOfBoundsException("数组索引越界异常"+i);
}
if (size == elementData.length )
{
grow();
}
for(int j = size ; j > i;j --) {
elementData [j] = elementData [j-1];
}
elementData[i] = o ;
size++;
}
@Override
public void add(Object o) {
this.add(size,o);
}
private void grow() {
或
elementData = Arrays.copyOf(elementData, elementData.length+(elementData.length >> 1));
}
@Override
public void remove(int i) {
if(i<=0||i>size) {
throw new MyArrayIndexOutOfBoundsException("数组索引越界异常"+i);
}
for(int j=i;j<size-1; j++)
{
elementData[j]=elementData[j+1];
}
size--;
}
@Override
public void remove(Object e) {
for(int i=0;i<size;i++)
{
if(elementData[i]==e)
{
for(int j=i;j < size-1; j++)
{
elementData[j]=elementData[j+1];
}
size--;
break;
}
}
}
@Override
public void replace(int i, Object e) {
if(i<=0||i>size) {
throw new MyArrayIndexOutOfBoundsException("数组索引越界异常"+i);
}
elementData[i]= e;
}
@Override
public String toString() {
if(size==0)
return "[]";
StringBuilder builder = new StringBuilder();
builder.append("[");
for(int i=0 ;i < size ; i++)
{
if(i!=size-1) {
builder.append(elementData[i]+",");
}
else {
builder.append(elementData[i]);
}
}
builder.append("]");
return builder.toString();
}
}
//自定义异常
public class MyArrayIndexOutOfBoundsException extends RuntimeException {
public MyArrayIndexOutOfBoundsException() {
super();
}
public MyArrayIndexOutOfBoundsException(String message) {
super(message);
}
}