Hallo Leute,
Ich habe hier eine generische ArrayListe mit einer Schnittstelle implementiert:
ArrayListe:
Schnittstelle:
Nun zu meiner Frage:
Wie funktioniert es, die ArrayList über den ArrayListContainer anzusprechen?
Das heißt ich möchte nicht direkt eine Instanz von ArrayList erstellen sondern
das eben über den Container laufen lassen?
Grüße
Ich habe hier eine generische ArrayListe mit einer Schnittstelle implementiert:
ArrayListe:
Java:
public class ArrayList<T extends Comparable<T>> extends ArrayListContainer<T>{
private int mLastIndex;
private Object[] mArray;
//*****Konstruktor***********************
public ArrayList(){
this(new Object[42]);
}
//*****Konstruktor***********************
public ArrayList(int aSize){
setArray(new Object[aSize]);
setLastIndex(0);
}
//*****Konstruktor***********************
public ArrayList(Object[] aArray){
setArray(aArray);
setLastIndex(aArray.length);
}
//*********************************************************************
public int quantity(){
return getLastIndex();
}
//*********************************************************************
public void add(T aObject){
if(getLastIndex() == getArray().length){
arrayGrow();
}
getArray()[getLastIndex()] = aObject;
mLastIndex++;
}
//*********************************************************************
public T objectAtIndex(int aIndex){
return (T)(getArray()[aIndex]);
}
//*********************************************************************
public boolean addObjectAtIndex(int aIndex, T aObject){
if(aIndex >= 0 && aIndex <= quantity()){
if(getLastIndex() == getArray().length){
arrayGrow();
}
for(int i = getLastIndex(); i > aIndex; i--){
getArray()[i] = getArray()[i-1];
}
getArray()[aIndex] = aObject;
return true;
}
else
return false;
}
//*********************************************************************
public boolean deleteObjectAtIndex(int aIndex){
if(aIndex >= 0 && aIndex <= quantity()){
for(int i = aIndex; i < getLastIndex()-1; i++){
getArray()[i] = getArray()[i+1];
}
mLastIndex--;
getArray()[getLastIndex()] = null;
return true;
}
else
return false;
}
//*********************************************************************
public int deleteObject(T aObject){
int count = 0;
for(int i = 0; i < getArray().length; i++){
if(getArray()[i] == aObject){
deleteObjectAtIndex(i);
count++;
}
}
return count;
}
//*********************************************************************
public boolean isInArray(T aObject){
for(int i = 0; i < getLastIndex(); i++){
if(getArray()[i] == aObject){
return true;
}
}
return false;
}
//*********************************************************************
public void arrayGrow(){
Object vArray[] = new Object[getArray().length*2];
for(int i = 0; i < getArray().length; i++){
vArray[i] = getArray()[i];
}
setArray(vArray);
}
//*********************************************************************
public int getLastIndex(){
return mLastIndex;
}
public void setLastIndex(int mLastIndex){
this.mLastIndex = mLastIndex;
}
public Object[] getArray(){
return mArray;
}
public void setArray(Object[] mArray){
this.mArray = mArray;
}
}
Schnittstelle:
Java:
public abstract class ArrayListContainer<T>{
public abstract int quantity();
public abstract void add(T aObject);
public abstract T objectAtIndex(int aIndex);
public abstract boolean addObjectAtIndex(int aIndex, T aObject);
public abstract boolean deleteObjectAtIndex(int aIndex);
public abstract int deleteObject(T aObject);
public abstract boolean isInArray(T aObject);
public abstract void arrayGrow();
}
Nun zu meiner Frage:
Wie funktioniert es, die ArrayList über den ArrayListContainer anzusprechen?
Das heißt ich möchte nicht direkt eine Instanz von ArrayList erstellen sondern
das eben über den Container laufen lassen?
Grüße