改变局部变量中的字典对象

时间:2017-05-05 05:09:25

标签: java arraylist hashmap

我正在尝试从方法ArrayList中删除该方法,并在一次查找中检查ArrayList是否为空。 这使用两个查找。

private Map<String, List<Method>> events;

public void removeEvent(String eventName, Method method){
    try{
        events.get(eventName).remove(method);
        if(events.get(eventName).size() == 0){
            events.remove(eventName);
        }
    }
    catch (Exception e){

    }
}

正如您所看到的,它查找方法的ArrayList以删除方法,然后再次查找它以查看其长度是否为零然后再次查找以删除HashMap条目。他们是至少结合前两个观察的方式吗?

2 个答案:

答案 0 :(得分:1)

你可以改成这种方式:

List<Method> methods = events.get(eventName);
if (methods == null) {
    return;
}
methods.remove(method);
if (methods.isEmpty()) {
    events.remove(eventName);
}

答案 1 :(得分:0)

以下代码可能对您的情况有所帮助。 它不需要第二次查找来检查列表的大小。

public void removeEvent(String eventName, Method method){
    try{
        List<Method> methods = events.get(eventName);
        methods.remove(method);
        if(methods.size() == 0){
            events.remove(eventName);
        }
    }
    catch (Exception e){

    }
}