常见Java集合的实现细节一Map与Set1.Map和Set的关系事实上map集合与Set结合有很多相似的地方,且两者可以相互扩展。下面是 map与set的集合框架图。显然从框架图中可以得知两者十分相似。两者之所以能够相互扩展,关键是Map集合中key的特点,key要求 不能重复且为无序,这一点正好与set集合中的元素特点一致,换句话说,Map中的key构成的集合本身就是set集合。因此Key-va lue可以通过.keySet()方法来得到Key的set集合。若将Map集合中的键值对绑定到一起视为一个元素,那么此时的map集合 就是set集合。因此此时可以将set集合当成map集合来使用。当然这需要对key-value元素进行一定的处理。总之Map与Set 之间的关系是:Map到Set的转换;Set到Map的扩展;Map是Set的特例下面主要说明如何将set集合扩展为Map集合:为 了把Set扩展成Map,可以考虑新增定义一个SimpleEntry类,该类代表一个Key-value对;当Set集合的集合元素都是 SimpleEntry对象时,该Set集合就能被当成Map使用。事实上将Set扩展成map的本质过程就是(1)定义一个类继承Ent ry类和Serializable类,该类表达的就是键值对(2)然后构建一个集合,将上面定义的那个类至于这个集合中。向set扩展成m ap集合中添加元素,本质是HashSet集合在对该元素进行存储,首先所添加的键值对会被转换为我们自定义的那个类,然后将该类存储于我 们定义的扩展的集合中,本质上是将这个类存储在扩展集合所继承的HashSet()集合。 |
|