HorrorRice
HorrorRice

Reputation: 33

How to check how many HashSet are inside Map<String, Set<String>>

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

Upvotes: 0

Views: 80

Answers (2)

Abhijay
Abhijay

Reputation: 328

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

Upvotes: 1

Nishant Bhardwaz
Nishant Bhardwaz

Reputation: 1001

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

Upvotes: 1

Related Questions