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