public interface List<E> extends Iterable<E> {
void add(E item);
E get(int index);
int size();
boolean isEmpty();
void clear();
void remove(int size);
}
import java.util.Arrays;
import java.util.Iterator;
@SuppressWarnings("unchecked")
public class ArrayList<E> implements List<E> {
private E[] elements;
private int index = 0;
public ArrayList() {
this.elements = (E[]) new Object[50];
}
@Override
public void add(E item) {
this.elements[index++] = item;
}
@Override
public E get(int index) {
return this.elements[--index];
}
@Override
public int size() {
return this.index;
}
@Override
public boolean isEmpty() {
return this.index == 0 ? true : false;
}
@Override
public void clear() {
Arrays.fill(elements, null);
index = 0;
}
public void remove(int index) {
for (int i = index - 1; i < this.index; i++) {
this.elements[i] = this.elements[i + 1];
this.elements[i + 1] = null;
}
this.index--;
}
@Override
public Iterator<E> iterator() {
return Arrays.stream(this.elements).filter(x -> x != null).iterator();
}
}
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
for (String string : list) {
System.out.println(string);
}
}
}