Original von double
Warum entfernt die Methode
public Object remove(Object key)
für Hashtables (java.util.Hashtable) nur dann ein Element aus einer
Enumeration (hier Properties abgeleitet von Hashtable), wenn
man remove(key) gefolgt von remove(value) aufruft?
Ist das wirklich so?
Original von double
Angenommen die Prop. wären {key=value} und
man führt nun remove(key) aus und ruft
z.B. prop.list(System.out) bzw. eine entsprechende toString()
Methode auf, bekommt man soetwas wie:
{key=null}
"value" wurde also entfernt, der Schlüssel bleibt jedoch erhalten.
Verzeih, aber ich verstehe dich nicht. Was meinst du mit "Prop"?
Ich habe Hashtable einmal getestet und die Tests laufen durch. (s.u.)
Hashtable scheint also zu funktionieren. Wo ist nun dein Problem?
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class TestHashtable extends TestCase {
Hashtable testTable;
public static void main(String[] args) {
junit.swingui.TestRunner.run(TestHashtable.class);
}
protected void setUp() throws Exception {
super.setUp();
testTable = new Hashtable();
testTable.put("key0", "value0");
testTable.put("key1", "value1");
testTable.put("key2", "value2");
}
public void testNotEmpty() {
assertFalse("Hashtable darf nicht leer sein", testTable.isEmpty());
assertTrue(testTable.containsKey("key0"));
assertTrue(testTable.containsKey("key2"));
assertTrue(testTable.containsKey("key1"));
assertTrue(testTable.containsValue("value2"));
assertTrue(testTable.containsValue("value1"));
assertTrue(testTable.containsValue("value0"));
assertFalse(testTable.containsValue("nichtdrin"));
}
public void testRemove() {
testTable.remove("key0");
assertEquals(2, testTable.size());
assertFalse(testTable.containsValue("value0"));
testTable.remove("key2");
assertEquals(1, testTable.size());
assertFalse(testTable.containsValue("value2"));
}
}
|