【发布时间】:2016-04-30 13:04:30
【问题描述】:
在文档中,HashMap 或 Hashtable 的返回类型是值本身,如下所示,
public V put(K key, V value)
并且,它告诉返回类型是 与 key 关联的先前值,如果没有 key 映射,则返回 null。 (返回 null 也可以表明映射之前将 null 与 key 关联。)
说,如果我写一个哈希表如下,
Hashtable<Integer, Character> hash = new Hashtable<Integer, Character>();
System.out.println(hash.put(12, 'c'));
现在,上面的代码返回null。我正在实现一个哈希表,我有点困惑何时返回 null 或 V,其中 V 将是与键关联的前一个值。我的代码如下,
// for dealing w/ the table data
class HashEntry<K, V> {
private final K key;
private V value;
public HashEntry(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
class MyHashTable <K, V> {
private int size;
private int DEFAULT_CAPACITY = 16;
private HashEntry<K, V>[] values = new HashEntry[DEFAULT_CAPACITY];
public V put(K key, V value) {
boolean insert = true;
for (int i = 0; i < size; i++) {
if (values[i].getKey().equals(key)) {
values[i].setValue(value);
insert = false;
}
}
if (insert) {
// method for check or increase capacity
increaseCapacity();
values[size++] = new HashEntry<K, V>(key, value);
}
return null;
// return value;
}
我什么时候应该在实现中返回 null 或 value(类型 V)?
【问题讨论】:
-
你有什么不明白的地方?文档中的解释似乎很简单。
-
什么不清楚?您刚刚引用的文档中详细描述了这种行为。
-
我编辑了这个问题,它是关于 Hashtable 实现的。
标签: java collections hashmap hashtable