package com.coding.basic;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public void add(Object o){
if (size+1>=elementData.length) {
this.groupLength();
}else if (size==0){
elementData[0]=o;
}else{
elementData[size] = o;
}
size = size + 1;
}
public void add(int index, Object o){
if (size+1>=elementData.length) {
this.groupLength();
}else if (index == size ) {
elementData[size] = o;
}else if(index>=0 && index<=size ){
Object[] elementDataNew = new Object[this.elementData.length];
System.arraycopy(elementData, 0, elementDataNew, 0, index);
elementDataNew[index]=o;
System.arraycopy(elementData, index, elementDataNew, index+1, size-index);
this.elementData = elementDataNew;
}else{
System.out.println("ָ��Խ��");
return;
}
size = size + 1;
}
public Object get(int index){
if (index>=0||index<=size) {
return elementData[index];
}else{
System.out.println("ָ��Խ��");
return null;
}
}
public Object remove(int index){
Object obj =this.elementData[index];
Object[] elementDataNew = new Object[this.elementData.length];
if (index<0 || index > size-1) {
System.out.println("ָ��Խ��");
return null;
}else if(index==0){
System.arraycopy(elementData, 1, elementDataNew, 0, size-1);
}else if(index==size){
System.arraycopy(elementData, 0, elementDataNew, 0, size-1);
}else if(index>0 && index <=size){
System.arraycopy(elementData, 0, elementDataNew, 0, index);
System.arraycopy(elementData, index+1, elementDataNew, index, size-index-1);
}
this.elementData = elementDataNew;
size=size-1;
return obj;
}
public int size(){
return size;
}
public Iterator iterator(){
return new IteratorArrayList(elementData,size);
}
private void groupLength(){
this.elementData = new Object[this.elementData.length + 10];
size=size+10;
}
public static void main(String[] args) {
ArrayList list = new ArrayList();
System.out.println(list.size());
list.add("aaa");
// System.out.println(list.remove(1));
list.add("bbb");
list.add(1, "ccc");
list.add(2, "ddd");
// System.out.println(list.size());
//
// System.out.println( list.remove(0) );
//
// list.add(0,"111");
// list.add("xxxx");
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)+",");
}
Iterator it = list.iterator();
int idex=0;
while (it.hasNext()) {
String str = (String) it.next();
idex++;
System.out.println("str"+idex+"=="+str+";");
}
}
}