import java.lang.ArrayIndexOutOfBoundsException; class StringArray { private final int BlockSize=16; private int mGrowBy=BlockSize; private int mActualItemCount=0; private int mVirtualItemCount=mGrowBy; private String mStringArray[]=new String[mGrowBy]; public String getAt(int arrayIndex)throws ArrayIndexOutOfBoundsException { if(arrayIndex>=size())throw new ArrayIndexOutOfBoundsException(); return mStringArray[arrayIndex]; } public void setAt(String strItem,int arrayIndex)throws ArrayIndexOutOfBoundsException { if(arrayIndex>=size())throw new ArrayIndexOutOfBoundsException(); mStringArray[arrayIndex]=strItem; } public boolean insert(String strItem) { guarantee(size()+1); mStringArray[size()]=strItem; size(size()+1); return true; } public void guarantee(int requiredSize) { if(virtualSize()>=requiredSize)return; String tmpArray[]=new String[virtualSize()+growBy()]; for(int index=0;index