Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.TreeMap;
- class Phone
- {
- String name, number;
- Phone(String name, String number)
- {
- this.name = name;
- this.number = number;
- }
- }
- class DuplicateNumberException extends RuntimeException{
- public DuplicateNumberException(String number)
- {
- super(number);
- System.out.println("Duplicate number: ");
- }
- }
- class PhoneBook
- {
- Map<String , ArrayList<String>> phone;
- final Comparator<String> comp = new Comparator<String>() {
- @Override
- public int compare(String o1, String o2) {
- // TODO Auto-generated method stub
- return o1.compareTo(o2);
- }
- };
- final Comparator<Integer> comp_int = new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- // TODO Auto-generated method stub
- return o1.compareTo(o2);
- }
- };
- PhoneBook()
- {
- this.phone = new TreeMap<>(comp);
- }
- void addContact(String name, String number)
- {
- if(phone.values().stream().anyMatch(v -> v.equals(number)))
- {
- throw new DuplicateNumberException(number);
- }
- phone.putIfAbsent(name, new ArrayList<String>());
- phone.computeIfPresent(name, (key, value) ->{
- value.add(number);
- return value;
- });
- }
- void contactsByNumber(String number)
- {
- if(phone.keySet().stream().anyMatch(k -> phone.get(k).stream()
- .anyMatch(t -> t.contains(number))))
- phone.keySet().stream().sorted(comp).
- forEach(k -> {
- phone.get(k).stream().forEach(a -> {
- if(a.contains(number))
- System.out.println(k + " " +a);
- }
- );
- });
- else
- System.out.println("NOT FOUND");
- }
- void contactsByName(String name)
- {
- if(phone.keySet().stream().anyMatch(k-> k.equals(name)))
- phone.keySet().stream().filter(t -> t.equals(name))
- .forEach(a -> {
- phone.get(a).stream().sorted(comp).forEach(b ->
- {
- System.out.println(a + " "+ b);
- });
- });
- else
- System.out.println("NOT FOUND");
- }
- }
- public class PhoneBookTest {
- public static void main(String[] args) {
- PhoneBook phoneBook = new PhoneBook();
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- scanner.nextLine();
- for (int i = 0; i < n; ++i) {
- String line = scanner.nextLine();
- String[] parts = line.split(":");
- try {
- phoneBook.addContact(parts[0], parts[1]);
- } catch (DuplicateNumberException e) {
- System.out.println(e.getMessage());
- }
- }
- while (scanner.hasNextLine()) {
- String line = scanner.nextLine();
- System.out.println(line);
- String[] parts = line.split(":");
- if (parts[0].equals("NUM")) {
- phoneBook.contactsByNumber(parts[1]);
- } else {
- phoneBook.contactsByName(parts[1]);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement