0

オブジェクト Person を格納するハッシュマップを作成しました。キーは文字列 (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","ASmith@atest.com"));
org.add(new Person("B", "Smith","1234567890", "BSmith@atest.com"));
org.add(new Person("C", "Walsh","1234567890","CWalsh@atest.com"));
org.add(new Person("D", "Glatt","1234567890","DGlatt@atest.com"));
org.add(new Person("E", "Cheong", "1234567890","ACheong@atest.com"));
org.add(new Person("F", "Walsh","0123456789","FWalsh@sg.com"));

      // remove an element from personDB
org.display("testing ......before remove");  // display all elements in personDB
org.remove("ACheong@atest.com");
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("ECheong@atest.com")
ID:[ASmith@atest.com]
ID:[CWalsh@atest.com]
ID:[FWalsh@sg.com]
ID:[ECheong@atest.com]
ID:[DGlatt@atest.com]
ID:[BSmith@atest.com]
null deleted!
after..................
ID:[ASmith@atest.com]
ID:[CWalsh@atest.com]
ID:[FWalsh@sg.com]
ID:[ECheong@atest.com]
ID:[DGlatt@atest.com]
ID:[BSmith@atest.com]
4

2 に答える 2

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

する必要があります

Object obj = personDB.remove(mail); 

へのパラメータremovekey、要素ではなく です。

于 2012-05-10T18:28:35.513 に答える
0

"AChong@atest.com" ではなく、Person がキーです。

これはうまくいくはずです:

Person p = new Person("E", "Cheong", "1234567890","ACheong@atest.com");
org.remove(p);
于 2012-05-10T18:31:14.393 に答える