One more thing is that AbstractMap is an implementation detail. It could be absent in a future version of Oracle's JDK.. It could be absent in a current version of IBM's JDK.. But whether it is present or not, the HashMap should always conform to the List contract.. So, it is explicitly captured in class declaration by specifying 'HashMap implements Map'