2017-05-05 11 views
0

メソッドArrayListからメソッドを削除し、ArrayListが1つの参照で空であるかどうかを確認するためにチェックしようとしています。 これは2つのルックアップを使用します。ローカル変数の辞書オブジェクトを変更する

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

を私はマップは、あなたは(集合です)値ならば何をしたいのか、実行時にはわからないよう、ありませんよねキーの値が空です。これを行うには独自のマップ実装を記述することができます。しかし、あなたはそれを手動で行う必要があります。 – kism3t

答えて

0

以下のコードが役に立つ場合があります。 リストのサイズを調べるのに2回目を検索する必要はありません。

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); 
}