2012-05-10 19 views
0

オブジェクトPersonを格納するハッシュマップを作成しました。このキーはString(Personの電子メールアドレス)です。私はキーを使用してハッシュマップのエントリを削除しようとしていますが、それが削除されない理由はわかりません。何が悪かったのか?私のコードと出力が含まれています。どんな助けもありがとう!ハッシュマップから要素を削除できません

import java.util.HashMap; 
import java.util.Map; 

public class TestHashMap { 

    private Map <String, Person> personDB = new HashMap<String, Person>(); 

    // added main to test the code 
    public static void main(String[] args) { 

TestHashMap org = new TestHashMap() ; 

     // add data to personDB 
org.add(new Person("A", "Smith","1234567890","[email protected]")); 
org.add(new Person("B", "Smith","1234567890", "[email protected]")); 
org.add(new Person("C", "Walsh","1234567890","[email protected]")); 
org.add(new Person("D", "Glatt","1234567890","[email protected]")); 
org.add(new Person("E", "Cheong", "1234567890","[email protected]")); 
org.add(new Person("F", "Walsh","","[email protected]")); 

     // remove an element from personDB 
org.display("testing ......before remove"); // display all elements in personDB 
org.remove("[email protected]"); 
org.display("after.................."); 
    } 

    public void add(Person p) { 
    String key = p.getEmail(); 
    personDB.put(key, p); 
    } 

    public void remove(String mail) { 
Object obj = personDB.remove(personDB.get(mail)); 
System.out.println(obj + " deleted!"); 
    } 
}  

マイ出力:

testing ......before remove("[email protected]") 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
null deleted! 
after.................. 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 
ID:[[email protected]] 

答えて

5
Object obj = personDB.remove(personDB.get(mail)); 

Object obj = personDB.remove(mail); 

removeへのパラメータがkey、ない要素であるべきです。

+0

を作品はい、おかげで、! – mwalsh

+0

@mwalshあなたは[正解を受け入れる]ことができます(http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work) –

0

人がキーではなく、 "[email protected]"

でこれは動作するはずです:

Person p = new Person("E", "Cheong", "1234567890","[email protected]"); 
org.remove(p); 
+1

人は鍵ではありません。 'org'は彼自身のクラスです。 'add'メソッドを見ると' p.getEmail() 'がキーとして使われます。 –

関連する問題