首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java集合的实现细节—Set会合和Map集合

2013-10-08 
Java集合的实现细节—Set集合和Map集合Set:代表无序、不可重复的集合Map:代表key-value对集合,也称为关联数

Java集合的实现细节—Set集合和Map集合

Set:代表无序、不可重复的集合Map:代表key-value对集合,也称为关联数组

        从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展。


1、Set集合和Map集合的继承体系

Java集合的实现细节—Set会合和Map集合

Set集合的继承体系

Java集合的实现细节—Set会合和Map集合

Map集合的继承体系

2、Set集合和Map集合的关系

        仔细观察上面两张图,可以发现以下规律:

Set   <--->   MapEnumSet   <--->   EnumMapSortedSet   <--->   SortedMapTteeSet   <--->   TreeMapNavigableSet   <--->   NavigableMapHashSet   <--->   HashMapLinkedHashSet   <--->   LinkedHashMap

        以上的关系绝对不是偶然的,Map集合的key不能重复,而且也是无序的。亦即Map集合中的key可以组成一个Set集合。实际上,Map集合提供了如下方法返回key所组成的Set集合。

Set<K>   keySet()

        由此,即可实现从Map到Set的转换。其实,还可以实现从Set到Map的扩展——Map集合就相当于一个Set集合,只是此时Set集合中的元素都是key-value对。如下图所示:

Java集合的实现细节—Set会合和Map集合            Java集合的实现细节—Set会合和Map集合

                                                                   Map集合示意图                                                       将关联数组的key-value对捆绑在一起

3、实现把Set扩展成“Map”集合

        为了把Set扩展成“Map”,可以考虑重新定义一个SimpleEntry类,使用这个类来代表一个key-value对。当Set集合的元素都是SimpleEntry对象时,该Set集合就变成了“Map”集合。


SimpleEntry.java



        由此可以看出,只要对Set稍做改造,就可将Set改造成可以和系统媲美的Map集合。



热点排行