Advertisement
lameski

Imenik

Aug 19th, 2017
470
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Comparator;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6. import java.util.TreeMap;
  7.  
  8. class Phone
  9. {
  10. String name, number;
  11. Phone(String name, String number)
  12. {
  13. this.name = name;
  14. this.number = number;
  15. }
  16. }
  17.  
  18. class DuplicateNumberException extends RuntimeException{
  19. public DuplicateNumberException(String number)
  20. {
  21. super(number);
  22. System.out.println("Duplicate number: ");
  23. }
  24. }
  25.  
  26. class PhoneBook
  27. {
  28. Map<String , ArrayList<String>> phone;
  29. final Comparator<String> comp = new Comparator<String>() {
  30.  
  31. @Override
  32. public int compare(String o1, String o2) {
  33. // TODO Auto-generated method stub
  34. return o1.compareTo(o2);
  35. }
  36. };
  37.  
  38. final Comparator<Integer> comp_int = new Comparator<Integer>() {
  39.  
  40. @Override
  41. public int compare(Integer o1, Integer o2) {
  42. // TODO Auto-generated method stub
  43. return o1.compareTo(o2);
  44. }
  45. };
  46. PhoneBook()
  47. {
  48. this.phone = new TreeMap<>(comp);
  49. }
  50.  
  51. void addContact(String name, String number)
  52. {
  53. if(phone.values().stream().anyMatch(v -> v.equals(number)))
  54. {
  55. throw new DuplicateNumberException(number);
  56. }
  57. phone.putIfAbsent(name, new ArrayList<String>());
  58. phone.computeIfPresent(name, (key, value) ->{
  59. value.add(number);
  60. return value;
  61. });
  62. }
  63.  
  64. void contactsByNumber(String number)
  65. {
  66. if(phone.keySet().stream().anyMatch(k -> phone.get(k).stream()
  67. .anyMatch(t -> t.contains(number))))
  68. phone.keySet().stream().sorted(comp).
  69. forEach(k -> {
  70. phone.get(k).stream().forEach(a -> {
  71. if(a.contains(number))
  72. System.out.println(k + " " +a);
  73. }
  74. );
  75.  
  76. });
  77. else
  78. System.out.println("NOT FOUND");
  79. }
  80.  
  81. void contactsByName(String name)
  82. {
  83. if(phone.keySet().stream().anyMatch(k-> k.equals(name)))
  84. phone.keySet().stream().filter(t -> t.equals(name))
  85. .forEach(a -> {
  86. phone.get(a).stream().sorted(comp).forEach(b ->
  87. {
  88. System.out.println(a + " "+ b);
  89. });
  90. });
  91. else
  92. System.out.println("NOT FOUND");
  93. }
  94. }
  95.  
  96. public class PhoneBookTest {
  97.  
  98. public static void main(String[] args) {
  99. PhoneBook phoneBook = new PhoneBook();
  100. Scanner scanner = new Scanner(System.in);
  101. int n = scanner.nextInt();
  102. scanner.nextLine();
  103. for (int i = 0; i < n; ++i) {
  104. String line = scanner.nextLine();
  105. String[] parts = line.split(":");
  106. try {
  107. phoneBook.addContact(parts[0], parts[1]);
  108. } catch (DuplicateNumberException e) {
  109. System.out.println(e.getMessage());
  110. }
  111. }
  112. while (scanner.hasNextLine()) {
  113. String line = scanner.nextLine();
  114. System.out.println(line);
  115. String[] parts = line.split(":");
  116. if (parts[0].equals("NUM")) {
  117. phoneBook.contactsByNumber(parts[1]);
  118. } else {
  119. phoneBook.contactsByName(parts[1]);
  120. }
  121. }
  122. }
  123.  
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement