帮助Java中的Hashmaps

Cry*_*tal 0 java hashmap

我不确定如何使用get()来获取我的信息.看着我的书,他们把钥匙传给了get().我认为get()返回与该键相关联的对象查看文档.但我必须在这里做错事......有什么想法吗?

import java.util.*;

public class OrganizeThis 
{
    /** 
    Add a person to the organizer

    @param p A person object
    */
    public void add(Person p)
    {   
        staff.put(p, p.getEmail());
        System.out.println("Person " + p + "added");
    }

    /**
    * Find the person stored in the organizer with the email address.
    * Note, each person will have a unique email address.
    * 
    * @param email The person email address you are looking for.
    *
    */
    public Person findByEmail(String email)
    {
        Person aPerson = staff.get(email);
        return aPerson;
    }

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

    public static void main(String[] args)
    {
        OrganizeThis testObj = new OrganizeThis();
        Person person1 = new Person("J", "W", "111-222-3333", "JW@ucsd.edu");
        testObj.add(person1);

        System.out.println(testObj.findByEmail("JW@ucsd.edu"));
    }
}
Run Code Online (Sandbox Code Playgroud)

dan*_*ben 7

你做错的是你以相反的顺序插入密钥和值(假设你想要电子邮件作为密钥).您可以在看到文档的签名put需要(key, value).

更改

staff.put(p, p.getEmail());
Run Code Online (Sandbox Code Playgroud)

staff.put(p.getEmail(), p);
Run Code Online (Sandbox Code Playgroud)

private Map<Person, String> staff = new HashMap<Person, String>();
Run Code Online (Sandbox Code Playgroud)

private Map<String, Person> staff = new HashMap<String, Person>();
Run Code Online (Sandbox Code Playgroud)

现在,您将能够Person通过其电子邮件地址查找.