Abgabe Übungstest 5
This commit is contained in:
@ -78,4 +78,19 @@ public class Aufgabe5Test {
|
|||||||
assertEquals(hashCode2, map.hashCode());
|
assertEquals(hashCode2, map.hashCode());
|
||||||
assertNotEquals(hashCode1, hashCode2);
|
assertNotEquals(hashCode1, hashCode2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDelKey() {
|
||||||
|
MassiveForceHashMap map = new MassiveForceHashMap();
|
||||||
|
NamedBody sun1 = new NamedBody(SolSystem4.SUN_NAMED);
|
||||||
|
NamedBody earth1 = new NamedBody(SolSystem4.EARTH_NAMED);
|
||||||
|
NamedBody moon1 = new NamedBody(SolSystem4.MOON_NAMED);
|
||||||
|
map.put(sun1, new Vector3());
|
||||||
|
map.put(earth1, new Vector3());
|
||||||
|
map.put(moon1, new Vector3());
|
||||||
|
assertNotNull(map.get(sun1));
|
||||||
|
assertNotNull(map.delete(sun1));
|
||||||
|
assertNull(map.get(sun1));
|
||||||
|
assertNull(map.delete(sun1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,16 +65,36 @@ public class MassiveForceHashMap {
|
|||||||
* Precondition: key != null.
|
* Precondition: key != null.
|
||||||
*/
|
*/
|
||||||
public Vector3 get(Massive key) {
|
public Vector3 get(Massive key) {
|
||||||
|
int pos = find(key);
|
||||||
|
return (pos == -1) ? null : values[pos];
|
||||||
|
}
|
||||||
|
|
||||||
|
private int find(Massive key) {
|
||||||
int idx = ((key.hashCode() % keys.length) + keys.length) % keys.length;
|
int idx = ((key.hashCode() % keys.length) + keys.length) % keys.length;
|
||||||
for (int i = 0; i < keys.length; i++) {
|
for (int i = 0; i < keys.length; i++) {
|
||||||
int pos = (idx + i) % keys.length;
|
int pos = (idx + i) % keys.length;
|
||||||
if (keys[pos] == null) {
|
if (keys[pos] == null) {
|
||||||
break;
|
break;
|
||||||
} else if (keys[pos].equals(key)) {
|
} else if (keys[pos].equals(key)) {
|
||||||
return values[pos];
|
return pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the mapping for the specified key from this map if present.
|
||||||
|
* Returns the previous value associated with key, or null if there was
|
||||||
|
* no mapping for key.
|
||||||
|
* Precondition: key != null
|
||||||
|
*/
|
||||||
|
public Vector3 delete(Massive key) {
|
||||||
|
int pos = find(key);
|
||||||
|
if (pos == -1) return null;
|
||||||
|
|
||||||
|
Vector3 val = values[pos];
|
||||||
|
values[pos] = null;
|
||||||
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user