【问题标题】:How to check how many HashSet are inside Map<String, Set<String>>如何检查 Map<String, Set<String>> 中有多少 HashSet
【发布时间】:2019-07-21 09:39:00
【问题描述】:
public class Phonebook implements PhonebookInterface {

Map<String, Set<String>> phonebook;

public Phonebook() {

    this.phonebook = new HashMap<String, Set<String>>();

}

@Override
public void addNumber(String person, String number) {

    if (!phonebook.containsKey(person)) {
        phonebook.put(person, new HashSet<String>());

    }

    phonebook.get(person).add(number);

}

@Override
public void getNumber(String person) {

我想检查一个人是否有多个电话号码,然后打印字符串 "numbers :" 否则,它只会打印一个。

    for (String n : phonebook.get(person)) {
      // check if there is more than one phone numbers
       if(person has more than one phone numbers){
        System.out.println(   "numbers :")
        System.out.println(n);
      } else {
        System.out.println(n);
    } 
}

主类

public static void main(String[] args) {
    Phonebook p = new Phonebook();

    p.addNumber("Pekka", "014-1234");
    p.addNumber("Pekka", "015-5344");
    p.getNumber("Pekka");

    p.addNumber("Matti", "013-4321");
    p.getNumber("Matti");

}

“Pekka”的预期输出是:

数字:
014-1234
015-5344

“Matti”的预期输出是:

013-4321

【问题讨论】:

  • 嗨 HorrorRice。你的问题是什么?你的代码块不工作吗?

标签: java oop dictionary hashmap hashset


【解决方案1】:
Set<String> numbers = phonebook.get(person);
if (numbers.size() > 1) {
  System.out.println("numbers :");
}
numbers.stream().forEach(System.out::println);

【讨论】:

    【解决方案2】:

    您可以在 for 循环之前简单地检查 Setsize

    public void getNumber(String person) {
    
        if (this.phonebook.get(person)
            .size() > 1) {
          System.out.println("numbers :");
        }
        for (final String n : this.phonebook.get(person)) {
          System.out.println(n);
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 2018-10-31
      • 2015-11-17
      • 2015-12-05
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多