套实际上是作为地图实现的吗?

Hat*_*end 5 java dictionary set data-structures

在StackOverflow上,我看到了响应:

A Set只是一个Map,除了它Key就是它Value.这就是为什么既SetMap不能有重复的,因为它违反了唯一Key原则.

但后来我看到(例如)Set根本不涉及自己Map.逸岸,Map甚至不是部分的Collections同时Set是.但对我来说,这没有意义,因为除了事实上两者都来自不同的接口之外,HashSet很可能JDK中的实现与实现非常相似HashMap.

在这方面SetMap这方面有什么关系?

在此输入图像描述

Era*_*ran 8

SetMap接口是不相关(除的keySet()entrySet()该方法Map返回接口Set由支持小号Map).

但是,有几个Set实现使用支持Map实现来存储它们的数据(Set底层的成为键的元素,而底层Map的值Map只是虚拟对象).这对于HashSetTreeSet.

这在Javadoc中提到:

公共类HashSet
扩展AbstractSet
实现Set,Cloneable,Serializable

此类实现Set接口,由哈希表(实际上是HashMap实例)支持.

而且:

公共类TreeSet
扩展AbstractSet
实现NavigableSet,Cloneable,Serializable

基于TreeMap的 NavigableSet实现.