В чем разница между объектами HashMap и Map в Java? - PullRequest
323 голосов
/ 28 августа 2009

В чем разница между следующими картами, которые я создаю (в другом вопросе люди ответили, используя их, казалось бы, взаимозаменяемо, и мне интересно, если / как они отличаются):

HashMap<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<String, Object>();

Ответы [ 13 ]

1 голос
/ 28 августа 2009

Map - это интерфейс, а Hashmap - это класс, который это реализует.

Итак, в этой реализации вы создаете одинаковые объекты

0 голосов
/ 09 февраля 2015
HashMap<String, Object> map1 = new HashMap<String, Object>();
Map<String, Object> map2 = new HashMap<String, Object>();  

Прежде всего Map - это интерфейс, имеющий другую реализацию, такую ​​как - HashMap, TreeHashMap, LinkedHashMap и т. Д. Интерфейс работает как суперкласс для класса реализации. Таким образом, согласно правилу ООП любой конкретный класс, который реализует Map, также является Map. Это означает, что мы можем присвоить / поместить любую переменную типа HashMap в переменную типа Map без какого-либо типа приведения.

В этом случае мы можем назначить map1 на map2 без приведения или потери данных -

map2 = map1
0 голосов
/ 23 сентября 2014

HashMap является реализацией Map, поэтому он почти такой же, но имеет метод "clone ()", как я вижу в справочном руководстве))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...