2016-10-10 23 views
0

enter image description here私は、文字列配列の値を特定の文字列と比較し、等しいものを削除する必要があるハッシュマップを持っています。この例では、特定のインデックス= "RES"のString []を知っていますが、if(equality)ステートメントを繰り返し実行すると、毎回falseが返されます。単純にhashmapを拡張するときに.equals()をオーバーライドすることについて心配する必要はありますか? if文の何が問題なのですか?.Equals()がハッシュマップを反復処理中に動作しない

public void filter(){ 
    Iterator<Map.Entry<String, String[]>> iter = this.entrySet().iterator(); 
    while(iter.hasNext()){ 
     Map.Entry<String,String[]> entry = iter.next(); 
     String[] current = entry.getValue(); 
     if(current[0].trim().equalsIgnoreCase("RES")){ 
      this.remove(entry.getKey()); 
     }   
    } 
} 
+2

は何である 'this.remove()'? –

+0

デバッガを使用すると、current [0]の値を参照してください。文字列の等価性に問題はありません。 –

+0

'if'文自体には何も問題はないようですが、' remove(key) 'の代わりに' iter.remove() 'を使用します。 – Zircon

答えて

1

置き換えます

this.remove(entry.getKey()); 

で:

iter.remove(); 
+0

ありがとう!私はちょうど同様にそれをキャッチした。同時変更例外は問題ではないようです。 current [0] = "RES"のとき、(current [0] .trim(0).IgnoreCase( "RES"))はfalseを返します。 – rickardx

関連する問題