2017-05-05 1 views
0

메소드 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

경우 값 (모음 인) 키가 비어 있습니다. 자신 만의 Map 구현을 작성하여이를 수행 할 수 있습니다. 하지만 여전히 어딘가에 수동으로해야합니다. – kism3t

답변

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){ 

    } 
} 
1
당신은이 방법으로 변경할 수 있습니다

:

List<Method> methods = events.get(eventName); 
if (methods == null) { 
    return; 
} 
methods.remove(method); 
if (methods.isEmpty()) { 
    events.remove(eventName); 
} 
나는지도 당신이 원하는 무엇을 런타임에 알지 않는 한,이 없을 거라 생각
관련 문제