亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過輸入 HashMap 值獲取 HashMap 鍵未按預期工作

通過輸入 HashMap 值獲取 HashMap 鍵未按預期工作

Helenr 2022-07-14 16:27:46
問題出在方法上getName()public class Phonebook implements PhonebookInterface {    private Map<String, Set<String>> phonebook;    private Map<String, Address> address;    public Phonebook() {        this.phonebook = new HashMap<String, Set<String>>();        this.address = new HashMap<String, Address>();    }    @Override    public void addNumber(String person, String number) {        if (!this.phonebook.containsKey(person)) {            this.phonebook.put(person, new HashSet<String>());        }        this.phonebook.get(person).add(number);    }    @Override    public void getName(String number) {        for (String person : this.phonebook.keySet()) {            if (this.phonebook.get(person).contains(number)) {                System.out.println(" " + person);            } else {                System.out.println("  not found");            }        }    }    @Override    public void getNumber(String person) {        try {            for (String n : this.phonebook.get(person)) {                if (this.phonebook.get(person).size() > 1) {                    System.out.println(" " + n);                } else {                    System.out.println("number: " + n);                }            }        } catch (Exception e) {            System.out.println("  not found");        }    }    public void addAddress(String person, String street, String city) {        this.address.put(person, new Address(street, city));    }預期的輸出是:搜索號碼:Pekka:014-1234015-5344Matti:號碼:013-4321通過電話號碼搜索人:Mattinot found但輸出是:搜索號碼:Pekka:014-1234015-5344Matti:號碼:013-4321通過電話號碼搜索人:未找到Mattinot found未找到為什么輸出打印“找不到”3次而不是一次?
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

您遍歷 的所有鍵Map并將相應的值與您要查找的值進行比較。如果沒有匹配,則打印“未找到”。


您Map有兩個鍵,因此如果您正在搜索 中存在的值Map,您將打印匹配的鍵,但您還將為另一個鍵打印“未找到”。


如果您正在搜索 中不存在的值Map,您將打印兩次“未找到”(每個鍵一次)。


您應該只在遍歷所有鍵后打印“未找到”:


public void getName(String number) {   

    for (String person : this.phonebook.keySet()) {   

        if (this.phonebook.get(person).contains(number)) {   

            System.out.println(" " + person);

            return;

        }    

    }

    System.out.println("  not found"); 

}


查看完整回答
反對 回復 2022-07-14
  • 1 回答
  • 0 關注
  • 73 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號