1
public synchronized Object put(Object key, Object value) {
2
// Make sure the value is not null
3
if (value == null) {
4
throw new NullPointerException();
5
}
6
7
// Makes sure the key is not already in the hashtable.
8
Entry tab[] = table;
9
int hash = key.hashCode();
10
int index = (hash & 0x7FFFFFFF) % tab.length;
11
for (Entry e = tab[index] ; e != null ; e = e.next) {
12
if ((e.hash == hash) && e.key.equals(key)) {
13
Object old = e.value;
14
e.value = value;
15
return old;
16
}
17
}
18
19
modCount++;
20
if (count >= threshold) {
21
// Rehash the table if the threshold is exceeded
22
rehash();
23
24
tab = table;
25
index = (hash & 0x7FFFFFFF) % tab.length;
26
}
27
28
// Creates the new entry.
29
Entry e = new Entry(hash, key, value, tab[index]);
30
tab[index] = e;
31
count++;
32
return null;
33
}


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

就此,问题的根源找到了,以后写程序的时候得多注意这些细节。以下附上setProperty(String key, String value)方法的描述:
1
Object java.util.Properties.setProperty(String key, String value)
2
Calls the Hashtable method put. Provided for parallelism with the getProperty method. Enforces use of strings for property keys and values. The value returned is the result of the Hashtable call to put.
3
4
See Also:
5
getProperty
6
Parameters:
7
key: the key to be placed into this property list.
8
value: the value corresponding to key.
9
Returns:
10
the previous value of the specified key in this property list, or null if it did not have one.
11
Since: 1.2

2

3

4

5

6

7

8

9

10

11
