我正在尝试从方法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条目。他们是至少结合前两个观察的方式吗?
答案 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){
}
}