67 lines
1.7 KiB
Java
67 lines
1.7 KiB
Java
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<virtualSize();index++)tmpArray[index]=mStringArray[index];
|
|
mStringArray=new String[virtualSize()+growBy()];
|
|
virtualSize(virtualSize()+growBy());
|
|
for(int index=0;index<virtualSize();index++)mStringArray[index]=tmpArray[index];
|
|
}
|
|
public int size()
|
|
{
|
|
return mActualItemCount;
|
|
}
|
|
private void size(int actualItemCount)
|
|
{
|
|
mActualItemCount=actualItemCount;
|
|
}
|
|
private int virtualSize()
|
|
{
|
|
return mVirtualItemCount;
|
|
}
|
|
private void virtualSize(int virtualSize)
|
|
{
|
|
mVirtualItemCount=virtualSize;
|
|
}
|
|
public int growBy()
|
|
{
|
|
return mGrowBy;
|
|
}
|
|
public void growBy(int growBy)
|
|
{
|
|
mGrowBy=growBy;
|
|
}
|
|
public void clear()
|
|
{
|
|
mStringArray=new String[growBy()];
|
|
size(0);
|
|
virtualSize(growBy());
|
|
}
|
|
} |