日期:2014-05-20  浏览次数:20816 次

刚学java大家帮我看看,为什么没有结果!
package sjjg;


import java.util.Iterator;

class MyArrayList<AnyType> implements Iterable <AnyType>{
private static final int DEFAULT_CAPACITY=10;
  private int theSize;
  private AnyType[] theItems;
  MyArrayList(){
  clear();
  }
  public void clear(){
  theSize=0;
  ensureCapacity(DEFAULT_CAPACITY);
 
  }
   
  public int size(){
return theSize;
  }
  public boolean isEmpty(){
  return theSize==0;
  }
  public void trimToSize(){
  ensureCapacity(size());
  }
  public AnyType get(int idx){
  if(idx<0||idx>=theSize)
  throw new ArrayIndexOutOfBoundsException();
return theItems[idx];
 
  }
  public AnyType set(int idx,AnyType newVal){
  if(idx<0||idx>=theSize)
  throw new ArrayIndexOutOfBoundsException("Index"+idx+";size"+theSize);
  AnyType oldItems=theItems[idx];
  theItems[idx]=newVal;
return oldItems;
 
  }
@SuppressWarnings("unchecked")
public void ensureCapacity(int newCapacity){
if(newCapacity<theSize)
return ;
AnyType[] old=theItems;
theItems=(AnyType[]) new Object[newCapacity];
for(int i=0;i<size();i++)
theItems[i]=old[i];

}
public void add(AnyType x){
add(size(),x);
}
public void add(int idx,AnyType x){
if(theItems.length==size()){
ensureCapacity(size()*2+1);}
for(int i=theSize;i>idx;i--){
theItems[i]=theItems[i-1];
theItems[idx]=x;

theSize++;//增加元素后,容量也要增加
}

}
public AnyType remove(int idx){
AnyType removeIdex=theItems[idx];
for(int i=idx;i<size()-1;i++)
theItems[i]=theItems[i+1];

theSize--;
return removeIdex;
}
public java.util.Iterator<AnyType> iterator(){
return new ArrayListIterator();

}
public class ArrayListIterator implements Iterator<AnyType> {
private int current=0;

public boolean hasNext(){
return current<size();
}

public AnyType next(){
if(!hasNext())
throw new java.util.NoSuchElementException();
return theItems[current++];
}

public void remove() {
MyArrayList.this.remove(--current);

}
}
}

public class TestMyArrayList {
public static void main(String[] args){
MyArrayList<Integer> myl=new MyArrayList<Integer>();
myl.add(2);
myl.add(4);
myl.add(6);
myl.add(8);
myl.add(10);

System.out.println("原数据:");
for(int i=0;i<myl.size();i++){
System.out.println(myl.get(i));
}

myl.add(2,3);
System.out.println();
System.out.println("在第三位置增加数据后:");
for(int i=0;i<myl.size();i++){
System.out.print(myl.get(i)+" ");
}

myl.remove(1);
System.out.println();
System.out.println("删除第二个数据后:");
for(int i=0;i<myl.size();i++){
System.out.print(myl.get(i)+" ");
}







}

}


------解决方案--------------------
Java code
add(int idx, AnyType x)

------解决方案--------------------
帮顶一下啦