A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-12-23 20:41  /  2841 人查看  /  41 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.Map接口下有几个子类,各自有什么特点?
        有3个子类:HashMa;LikedHashMap;Hash table;
       HashMap是双列集合,并且无序,底层原理是有由哈希表(数组+单项链条/红黑树)存储元素,多线程所以查询速度非常快,但确是相对不安全的集合,可以储存null键和null值,并且K键是唯一的不可重复,V值可以重复。
       LikedHashMap是HashMap的子类,有一点不同的是LikedHashMap是有序的集合,底层多了个链条来记录元素顺序。其他特点跟Hash Map一样。
       Hashtable是一个相对比较古老的Map的子类,也是双列集合,无序,是一个单线程效率低,但却又是更加安全的集合,无法存储null键和null值,目前已基本被替代,但他有一个子类目前还仍在使用,今天还未学习。

2.目前为止,我们所学的遍历map集合有几种方式?
       目前有2种方法,第1种方式keySet,通过键找值方法,使用键值获取对应的V值;第2种方式entrySet,通过存储键值对的映射关系,将一对对的元素储存到集合中,这个方法更多面向键值为自定义的对象类型。

3.请用自己的语言描述你所了解的集合体系
集合体系主要分为2大类:Collection 单列集合 和 Map 双列集合。
Collection下有两大类型的集合:List集合:有序,有索引,元素可重复;Set集合:无索引,元素不可重复;
      List类:ArrayList集合,有索引查询速度快,增删慢因为底层由数组组成,增删时都要复制到新数组;
                 LinkedList集合,查询慢因为底层是链表结构,需要从头逐一获取元素,增删快因为只需要记住下一个元素的地址,每次增删都在此地址值;
                 Vector集合:古老的集合,线程安全,但效率低。
      Set类:HashSet集合:无序,底层由哈希表存储元素,存储元素是通过比较哈希值,哈希值不同直接添加,哈希值相同,再比较属性,不同才添加,所以必须重写HashCode和eglus方法;
             LinkedHashSet集合:是HashSet的子类,有序,因为底层是由哈希表+链条的结构记录元素,链条记录了顺序,保证了有序,其他和Hashset相同;

Map集合有3种类型,共性特点是:双列集合,一个元素包含两个值:Key键,Value值,K和V数据类型可以不同或相同,K键是唯一的不可重复,V值可以重复,两者成对共存;
          HashMap集合:底层由哈希表+单项链条(或红黑树)结构存储元素,查询快,无序,多线程,可以存储Null键和Null值,因为无序所以无法使用迭代器进行遍历,需要使用KeySet或EntrySet进行便利。
         LinkedHashMap集合:是HashMap的子类,底层由哈希表+链表组成,链表用来记录顺序,所以它是有序集合,其他特点跟HashMap一样;
          Hashtable集合:是相对古来的集合,继承Map接口,一样也是双列集合,无序,是一个线程安全的集合,但效率比较低速度慢,不能储存Null键和Null值。但它有一个子类现在还很活跃。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马