这有点像方法论问题。我存储了一对泛型,当我将数据存储到我的数组中时,我想只返回前一个值。我很难弄清楚如何返回前一个位置的值或null,如果之前处于该状态。
下面你会看到我正在尝试做什么。
public V put(K key, V value) {
if (value == null) {
throw new NullPointerException("The value you are trying to pass is null.");
}
if (size == table.length){
enlarge();
}
int loc = 0;
while (loc < size){
if (table[loc].value.compareTo(value) < 0){
loc++;
}else{
break;
}
}
for (int index = size; index > loc; index--)
table[index] = table[index - 1];
这是我试图存储旧值的地方。
if (table[loc] != null){
V oldValue = table[loc].value;
table[loc] = new SVData<K, V>(key, value);
size++;
return oldValue;
} else {
table[loc] = new SVData<K, V>(key, value);
size++;
return null;
}
}
我遇到的问题是实际存储旧值的方法(我认为)。现在我把它放在if块中,它检查该索引是否为null,但是返回新值。在创建这样的方法时,哪个是尝试存储该值的过程中的最佳位置?
我也试图从黑客代码转移到干净利落的代码,因此在该领域的任何其他建议都会很棒。