Как проверить, сколько HashSet находится внутри карты - PullRequest
0 голосов
/ 27 февраля 2019
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);
    } 
}

класс 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");

}

Ожидаемый выход "Пекка":

чисел:
014-1234
015-5344

Ожидаемый выход "Матти":

013-4321

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019
Set<String> numbers = phonebook.get(person);
if (numbers.size() > 1) {
  System.out.println("numbers :");
}
numbers.stream().forEach(System.out::println);
0 голосов
/ 27 февраля 2019

Вы можете просто проверить size из Set перед циклом.

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