在数组中使用插入排序后返回先前的值

时间:2013-12-06 07:43:58

标签: java arrays generics insertion-sort

这有点像方法论问题。我存储了一对泛型,当我将数据存储到我的数组中时,我想只返回前一个值。我很难弄清楚如何返回前一个位置的值或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,但是返回新值。在创建这样的方法时,哪个是尝试存储该值的过程中的最佳位置?

我也试图从黑客代码转移到干净利落的代码,因此在该领域的任何其他建议都会很棒。

0 个答案:

没有答案