Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java hashmap返回键和输入的特定键的值_Java_Search_Hashmap - Fatal编程技术网

java hashmap返回键和输入的特定键的值

java hashmap返回键和输入的特定键的值,java,search,hashmap,Java,Search,Hashmap,我正在使用hashmaps,遇到了一个问题。在我的程序中,我正在开发一个地址簿,每个人都有名字和姓氏以及相应的地址。因此,我的hashmap的键是person对象,值是address。我正在尝试迭代hashmap并打印指定人员的密钥和值,以下是迄今为止我的代码: public class AddressBook { private Map<Person, Address> contacts = new ConcurrentHashMap<Person, Address&

我正在使用hashmaps,遇到了一个问题。在我的程序中,我正在开发一个地址簿,每个人都有名字和姓氏以及相应的地址。因此,我的hashmap的键是person对象,值是address。我正在尝试迭代hashmap并打印指定人员的密钥和值,以下是迄今为止我的代码:

public class AddressBook {
    private Map<Person, Address> contacts = new ConcurrentHashMap<Person, Address>();

    public void addContact(Person p, Address a) {
        this.contacts.put(p, a);
    }

    public void removeContact(Person p) {
        this.contacts.remove(p);
    }

    public boolean hasContact(Person p) {
        return this.contacts.containsKey(p);
    }

    public void listAllContacts(){
        for (Map.Entry<Person,Address> entry : contacts.entrySet()) {
        System.out.println(entry.getKey()+" : "+entry.getValue());
}
    }

    public void listContact(Person p){
        for (int i=0;i<contacts.size();i++) {

        }
    }
}
公共类通讯簿{
私有映射联系人=新的ConcurrentHashMap();
公共联系人(p人,地址a){
这个.触点.put(p,a);
}
公共无效删除联系人(p人){
此。触点。移除(p);
}
公共联系人(p人){
返回此.contacts.containsKey(p);
}
public void listAllContacts(){
对于(Map.Entry:contacts.entrySet()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
}
公共联系人(p人){

对于(int i=0;i我通过简单地使用toString方法打印Key
System.out.println(p.toString()+contacts.get(p));
get()
检索该键的值的方法

如果我不了解如何从键中获取值,地图将几乎没有那么大的用处,我要问的是如何打印键和特定键的值。因为地图不是由单个名称键入的,所以您必须扫描整个地图,并找到所有人名为
Charles的条目
。也许你应该重新考虑一下你要查找的内容,以及是否可以有多个条目,例如两个或多个名为
Charles
,或者一些名为
Charles
的人和其他姓为
Charles
的人。我开始认为我的措辞相当糟糕。好的,假设Person对象p1不是键和对象p1有一个地址值。是否有方法打印对象p1键及其值,如.getKey和.getValue但对于一个对象,当您可以简单地将地址作为
Person
类的字段时,为什么要使用映射将地址与人关联?