Hinweis: Die Lösung der Aufgabe wurde von mir am 05.05.09 um 16:30 Uhr aktualisiert!
Hier die Lösung zu der ersten Aufgabe im dritten AP 2 Praktikum:
Die Aufgabenblätter sind hier zu finden: http://www.gm.fh-koeln.de/~ehses/ap/index.html
public class Table implements ITable {
private static final int DEFAULT_INITIAL_SIZE = 4;
private int size;
private Entry[] data = new Entry[DEFAULT_INITIAL_SIZE];
private void pruefeKey(Object key) {
if(key==null){
throw new NullPointerException(“key darf nicht 0 sein!”);
}
}
public int size(){
return size;
}
public Object put(Object key, Object value){
pruefeKey(key);
if(size>=data.length){
Entry[] newdata = new Entry[data.length*2];
for(int j =0; j<data.length; j++){
newdata[j]=data[j];
}
data=newdata;
}
for(int i =0;i<size; i++){
if(data[i]!=null){
if(data[i].getKey().equals(key)){
return data[i].setValue(value);
}
}
}
data[size++]= new Entry(key, value);
return null;
}
public Object get(Object key){
pruefeKey(key);
for(int i =0; i<size; i++){
if(data[i].getKey().equals(key)){
return data[i].getValue();
}
}
return null;
}
public boolean containsKey(Object key){
pruefeKey(key);
for(int i =0; i<size; i++){
if(data[i]!=null){
if(data[i].getKey().equals(key)){
return true;
}
}
return false;
}
public Object remove(Object key){
pruefeKey(key);
for(int i =0; i<size; i++){
if(data[i].getKey().equals(key)){
Object temp = data[i].setValue(null);
for(int j =i; j<data.length; j++){
if(j+1!=data.length){
data[j]=data[j+1];
}
}
size- -;
return temp;
}
}
return null;
}
public Object[] keys(){
Object[] keys = new Object[size];
for(int i =0; i<keys.length; i++){
if(data[i]!=null){
keys[i]=data[i].getKey();
}
}
return keys;
}
}