java字典中的方法更新

java字典中的方法更新,java,dictionary,Java,Dictionary,我正在词典中更新方法,但找不到解决方案。 所以这里我有字典课: public class Dictionary implements IDictionary{ public class ObjectDictionary{ //public boolean isFull=false; public Object key; public Object value; public void setValue(Object value){ this.va

我正在词典中更新方法,但找不到解决方案。 所以这里我有字典课:

 public class Dictionary implements IDictionary{
public class ObjectDictionary{
    //public boolean isFull=false;
    public Object key;
    public Object value;
    public void setValue(Object value){
        this.value = value;
    }
    public Object getValue(){
        return value;
    }
    public ObjectDictionary(Object k,Object v){
        this.key=k;
        this.value=v;
    }
}
//......(other methods)
public void put(Object k,Object v){ 
        //ObjectDictionary ob = new ObjectDictionary();
        if (elems.length == nrElem){
            resize();
        }
        elems[nrElem] = new ObjectDictionary(k,v);
        elems[nrElem].key=k;
        elems[nrElem].value=v;
        //elems[i].isFull=true;
        nrElem++;

}
public void update(Object k, Object v, Object newV){
    ObjectDictionary ob = new ObjectDictionary(k,v);

    if (lookUp(k) !=null){
       ob.setValue(newV);
    }


}

public Object lookUp(Object k){
    for(int i=0; i<elems.length;i++)
        if(elems[i].key.equals(k)){
            return elems[i].value;     
        }
    return null;
}
}
我想可能是查找(k)有问题,因为它返回值,然后检查字典中是否存在,然后焦急地找不到键,但我不知道。这里有什么问题? 我还尝试在此处替换:

ObjectDictionary ob = new ObjectDictionary(k,v) 

v值为0但未成功。有什么建议吗?谢谢。

您似乎没有更新参考资料:

public void update(Object k, Object v, Object newV){
    ObjectDictionary ob = new ObjectDictionary(k,v);

    if (lookUp(k) !=null){
       ob.setValue(newV);
    }


}
试试这个

public Object getEntry(Object k){
    for(int i=0; i<elems.length;i++)
        if(elems[i].key.equals(k)){
            return elems[i];     
        }
    return null;
}
public void update(Object k, Object v, Object newV){

    Object entry = getEntry(k)
    if (entry !=null){
       entry.setValue(newV);
    }


}
公共对象getEntry(对象k){

对于(int i=0;iWhy是
对象类型的
,而不是
字符串
整数
?您将数字作为参数传递给期望
对象
的函数,您到底面临什么问题?是否得到错误/异常/不正确的结果(您预期的结果是什么,为什么,以及您得到的结果)?我没有收到错误,它只打印a的初始值,7而不是4。Dictionary类已过时。您可以将代码更改为Map或Preferences吗?我开始使用字典,我不会更改代码。没有帮助。它会再次打印7。
lookUp(k)
返回值,而不是从数组中调用
setValue
ObjectDictionary
。但主要思想是正确的:尝试使用所选键从数组中查找条目,如果成功,则更新其值,如果不添加新值(或者根据OP的需要不执行任何操作)@Pshemo谢谢,我更新了代码-没有意识到只有值。
public Object getEntry(Object k){
    for(int i=0; i<elems.length;i++)
        if(elems[i].key.equals(k)){
            return elems[i];     
        }
    return null;
}
public void update(Object k, Object v, Object newV){

    Object entry = getEntry(k)
    if (entry !=null){
       entry.setValue(newV);
    }


}