Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. import java.util.Collection;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.stream.Collectors;
  5.  
  6. public class MapViews {
  7.  
  8. public static void main(String[] args) {
  9. mapChangeModifiesValuesSet();
  10. mapChangeModifiesKeysSet();
  11. valuesSetChangeModifiesMap();
  12. }
  13.  
  14. static void mapChangeModifiesValuesSet() {
  15. Map<Integer, User> usersMap = loadUsersFromWherever();
  16. UseValues withValues = new UseValues(usersMap.values());
  17. usersMap.put(4, new User(4, "Donald"));
  18. withValues.doSomething();
  19. }
  20.  
  21. static UseKeys mapChangeModifiesKeysSet() {
  22. Map<Integer, User> usersMap = loadUsersFromWherever();
  23. UseKeys withKeys = new UseKeys(usersMap.keySet());
  24. usersMap.put(4, new User(4, "Donald"));
  25. withKeys.doSomething();
  26. return withKeys;
  27. }
  28.  
  29. static void valuesSetChangeModifiesMap() {
  30. Map<Integer, User> usersMap = loadUsersFromWherever();
  31. UseValues withValues = new UseValues(usersMap.values());
  32. withValues.clear();
  33. System.out.println("Map content: " + usersMap);
  34. }
  35.  
  36. static class UseValues {
  37.  
  38. private final Collection<User> users;
  39.  
  40. public UseValues(Collection<User> users) {
  41. this.users = users;
  42. System.out.println("UseValues constructor: " + users);
  43. }
  44.  
  45. public void doSomething() {
  46. System.out.println("UseValues doSomething: " + users);
  47. }
  48.  
  49. public void clear() {
  50. users.clear();
  51. }
  52.  
  53. }
  54.  
  55. static class UseKeys {
  56.  
  57. private final Collection<Integer> ids;
  58.  
  59. public UseKeys(Collection<Integer> ids) {
  60. this.ids = ids;
  61. System.out.println("UseKeys constructor: " + ids);
  62. }
  63.  
  64. public void doSomething() {
  65. System.out.println("UseKeys doSomething: " + ids);
  66. }
  67.  
  68. }
  69.  
  70. static class User {
  71.  
  72. private final Integer id;
  73. private final String name;
  74.  
  75. public User(Integer i, String name) {
  76. this.id = i;
  77. this.name = name;
  78. }
  79.  
  80. public Integer getId() {
  81. return id;
  82. }
  83.  
  84. public String getName() {
  85. return name;
  86. }
  87.  
  88. @Override
  89. public String toString() {
  90. return id + ": " + name;
  91. }
  92.  
  93. }
  94.  
  95. static Map<Integer, User> loadUsersFromWherever() {
  96. Map<Integer, User> users = new HashMap<>();
  97. users.put(1, new User(1, "John"));
  98. users.put(2, new User(2, "Peter"));
  99. users.put(3, new User(3, "Rose"));
  100. return users;
  101. }
  102.  
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement