package Iterator.MyTest;
public interface Iterator<E> {
public abstract boolean hasNext();
public abstract E next();
public void remove();
}
package Iterator.MyTest;
public interface Iterable<T> {
public Iterator<T> iterator();
}
package Iterator.MyTest;
public class ArrayListIterator<E> implements Iterator<E> {
int current;
ArrayList<E> ce;
public ArrayListIterator(ArrayList<E> ce)
{
this.ce=ce;
current=-1;
}
@Override
public boolean hasNext() {
if(current+1==ce.getLength())
{
return false;
}else{
return true;
}
}
@Override
public E next() {
if(hasNext())
{
current++;
return (E) ce.getObject()[current];
}else{
return null;
}
}
@Override
public void remove() {
}
}
package Iterator.MyTest;
import java.util.Arrays;
public class ArrayList<E> implements Iterable<E> {
int MIN_SIZE = 10;
int size;
Object[] objs;
Object[] temp;
public ArrayList() {
objs = new Object[MIN_SIZE];
size=-1;
}
@Override
public Iterator<E> iterator() {
return new ArrayListIterator<E>(this);
}
public Object[] getObject()
{
return objs;
}
public int getLength() {
return size+1;
}
public void add(E e) {
if (size+1 == MIN_SIZE) {
MIN_SIZE += 10;
/* temp = objs;
objs = new Object[MIN_SIZE];
for(int i=0;i<temp.length;i++)
{
objs[i]=temp[i];
}*/
/** 简便方法 **/
objs=Arrays.copyOf(objs, MIN_SIZE);
}
objs[++size] = e;
}
public boolean isEmpty() {
if (size == 0) {
return true;
} else {
return false;
}
}
public E remove(int index) {
E e = (E) objs[index];
for (int i = index; i < size; i++) {
objs[i] = objs[i + 1];
}
objs[size] = null;
size--;
return e;
}
public E get(int index) {
return (E) objs[index];
}
}
测试代码和jdk中的效果
package Iterator.MyTest;
//import java.util.ArrayList;
//import java.util.ListIterator;
public class MyTest {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<Integer> ais=new ArrayList<Integer>();
ais.add(1);
ais.add(3);
ais.add(4);
ais.add(5);
ais.add(3);
ais.add(4);
ais.add(5);
ais.add(3);
ais.add(4);
ais.add(5);
ais.add(3);
ais.add(4);
ais.add(5);
System.out.println("删除了"+ais.remove(2));
Iterator<Integer> ii=ais.iterator();
while(ii.hasNext())
{
System.out.println(ii.next());
}
/* ArrayList<Integer> ais=new ArrayList<Integer>();
ais.add(1);
System.out.println("删除了"+ais.remove(2));
ListIterator<Integer> ii=ais.listIterator();
while(ii.hasNext())
{
System.out.println(ii.next());
}*/
}
}