删除hashTable中关于对象选择的函数

时间:2014-12-12 15:28:29

标签: java

在删除功能中,如何比较hashTable中的值和你输入的值,我的代码卡在那里:

//delete router
public void delRouter(String routerNum){

    Iterator it = ht.keySet().iterator();

    while (it.hasNext()){

        String key = it.next().toString();

        //take Router object out
        Router router = (Router)ht.get(key);

        if(router.getRouterNum().equals(routerNum)){

            // delete object
            ht.remove(routerNum);
        }
    }
}

我认为问题是ht.remove();请帮帮忙。谢谢你们!

2 个答案:

答案 0 :(得分:0)

使用ht.remove(routerNum)

而不是将值传递给ht.remove(key)(通过传递值,如果传递密钥会有效)

我建议你使用iterator的remove方法it.remove()

答案 1 :(得分:0)

您使用ht.remove(routerNum);从地图中删除路由器的事实表明您使用路由器的数字作为地图的键。在这种情况下,根本不需要迭代地图中的所有键!只需致电ht.remove(routerNum);即可:

public void delRouter(String routerNum){
    ht.remove(routerNum);
}

或者,如果您希望/必须检查地图中的路由器是否确实具有该号码,请执行以下操作:

public void delRouter(String routerNum){
    Router router = (Router) ht.get(key);
    if (router.getRouterNum().equals(routerNum)){
        ht.remove(routerNum);
    }
}