понеділок, 16 листопада 2015 р.

Java Collections: Map


     Map є частиною Java Collections Framework (docs.oracle.com). 
  • Map зберігає як ключі, так і приєднані до них дані, на відміну від Set, який зберігає тільки дані;
  •  не містить дублікати ключів;  
  • ключ може вказувати тільки на один єдиний відподний йому набір даних (набір даних -> клас);
  • залежно від імплементації, Map може або не може містити null;
  • Map - це інтерфейс, конкретні його реалізації  в Java SDK: HashMap, TreeMap, LinkedHashMap, а також інші;
  • Інтерефйс містить декілька методів, які не є обовязковими для імплементування (optional operation);
  • методи доступу до даних:

    Value get(Object ключ)
    • повертає дані, на які вказує цей ключ;
    • АБО null якщо Map не містить даного ключа;
    • АЛЕ, увага, якщо імплементація дозволяє nulls, то результат null ще не значить, що ключа немає в Map. В такому випадку перевірити наявність ключа можна методом containsKey ;
    Value put(Key ключ, Value дані)
    • якщо раніше цього ключа не було в Map - зберігає ключ та дані в Map і повертає null;
    • якщо ключ вже знаходиться в Map - знищує старі дані і записує нові, повертаючи значення старих даних;
    • АЛЕ, увага, якщо імплементація дозволяє nulls, то результат null ще не значить, що ключа не існувало в Map. Це може також значити, що ключ існував і його дані мали значення null.
    Value remove(Object ключ)
    • якщо ключ вже знаходиться в Map - знищує значення ключа та відповідні йому дані, повертаючи значення даних;
    • якщо цього ключа не було в Map - нічого не виконує і повертає null;
    • АЛЕ, увага, якщо імплементація дозволяє nulls, то результат null ще не значить, що ключа не існувало в Map. Це може також значити, що ключ існував і його дані мали значення null.

  • методи, які дозволяють ітерувати над даними - всі вони представляють Map у вигляді звичайних Collection (Collection views). Таке представлення у вигляді Collection побудуване на базі Map, тому будь які зміни, які відбулися з даними в представленні (Collection view), будуть одразу відображені і у відповідній Map. Collection views, які утворені цими методами, не підтримують додавання нових об'єктів. Collection views підтримують модифікацію та видалення елементів. Якщо Map модифіковано під час ітерування в Collection views, то результат ітерування є непередбачуваним.

    Set<Map.Entry<K,V>> entrySet()
    • повертає Set-вигляд всіх значень - і ключів і даних.
    Set<K> keySet()
    • повертає Set-вигляд ключів.
    Collection<V> values()
    • повертає Collection-вигляд даних.

  • інформативні методи
    boolean containsKey(Object key)
    boolean containsValue(Object value)
    boolean isEmpty()
  •    
Почитати: How does a HashMap work in JAVA

3 коментарі: