package com.coding.basic;
import java.util.Arrays;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public void add(Object o){
int n = elementData.length;
int i = 0;
while (elementData[i] != null) {
i++;
}
if (i < n) {
elementData[i] = o;
} else {
Object[] temp = Arrays.copyOf(elementData, n + 1);
temp[n] = o;
elementData = temp;
}
size++;
}
public void add(int index, Object o){
int n = elementData.length;
int i = 0;
while (elementData[i] != null) {
i++;
}
if (index < 0 || index > i) {
System.out.println(index + " is invalid index!");
return;
}
if (i < n) {
for (int j = i; j > index; j--) {
elementData[j] = elementData[j - 1];
}
elementData[index] = o;
} else {
Object[] temp = Arrays.copyOf(elementData, n + 1);
for (int j = i; j > index; j--) {
temp[j] = temp[j - 1];
}
temp[index] = o;
elementData = temp;
}
size++;
}
public Object get(int index){
int i = 0;
while (elementData[i] != null) {
i++;
}
if (index < 0 || index >= i) {
System.out.println(index + " is invalid index!");
return null;
} else {
return elementData[index];
}
}
public Object remove(int index){
int i = 0;
while (elementData[i] != null) {
i++;
}
if (index < 0 || index >= i) {
System.out.println(index + " is invalid index!");
return null;
}
Object result = elementData[index];
for (int j = index; j < i; j++) {
elementData[j] = elementData[j + 1];
}
size--;
return result;
}
public int size(){
return size;
}
public String toString() {
int i = 0;
while (elementData[i] != null) {
i++;
}
String result = "";
for (int j = 0; j < i - 1; j++) {
result += elementData[j].toString() + ", ";
}
result += elementData[size - 1].toString();
return result;
}
public Iterator iterator(){
return null;
}
public static void main(String args[]){
ArrayList list1 = new ArrayList();
list1.add("a");
list1.add("b");
list1.add("c");
System.out.println(list1.toString());
list1.add(5, "d");
list1.add(1, "d");
System.out.println(list1.toString());
list1.add(4, "e");
System.out.println(list1.toString());
list1.get(5);
System.out.println(list1.get(0));
list1.remove(2);
System.out.println(list1.toString());
System.out.println(list1.size());
}
}