0
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) {

I want to check if a person has more than one phonenumbers, then print string "numbers : " else, it will only print one.

    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);
    } 
}

class Main

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");

}

Expected output of "Pekka" is :

numbers :
014-1234
015-5344

Expected output of "Matti" is :

013-4321

Community
  • 1
  • 1
HorrorRice
  • 33
  • 1
  • 5

2 Answers2

1

You can simply check the size of Set before for loop.

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);
    }
  }
Nishant Bhardwaz
  • 924
  • 8
  • 21
1
Set<String> numbers = phonebook.get(person);
if (numbers.size() > 1) {
  System.out.println("numbers :");
}
numbers.stream().forEach(System.out::println);
Abhijay
  • 278
  • 1
  • 8