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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

1.Map接口下有几个子类,各自有什么特点?        HashMap:HashMap底层采用哈希表结构来实现的,HashMap是一个无序的集合(无序是说存储和取出的顺序不一致),他保存的是Key和Value的键值对,在HashMap中,键是需要保证唯一的,如果有相同的键,那么,等同于List集合中的Set方法,他会把具有相同键值的Value值改成后面添加的数据.他的Value可以重复.如果要使用HashMap存储自定义的类型,那么要重写hashCode()方法和equals()方法,来确定键值的唯一性.
         LinkedHashMap:LinkedHashMap是HashMap的子类,LinkedHashMap底层是使用哈希表结构加链表结构来实现的,LinkedHashMap是有序的,它使用链表来保证元素的存取顺序是有序的.LinkedHashMap也是要保证Key值得唯一性,他也可以存储自定义的数据类型.也要重写hashCode()方法和equals()方法,来确定键值的唯一性.
2.目前为止,我们所学的遍历map集合有几种方式?
         keySet()方法,他把Map中所有的键取出,放在Set集合中,然后使用增强for取出在Set集合中的键值,然后通过get()方法取出对应的值.实现遍历Map集合的目的;
         entrySet()方法,直接成对的取出Key和Value的值并把他们封装成键值对对象,然后使用增强for和entrySet()方法提供的getKey()方法和getValue()方法取出Key和Value,也能实现遍历Map集合的目的;
3.请用自己的语言描述你所了解的集合体系


          分为了Collection接口下的集合和Map集合,Collection的集合又分为List集合和Set集合;
          List集合分为ArrayList,和LinkedArrayList还有远古时期遗留的Vactor.List接口下的集合的特点为:有索引,可重复,有序的(存储和取出的顺序是一致的).
          每个子类都有自己的特点,ArrayList的特点为查找速度快,因为他的底层是数组实现,有索引值.但是他的增删速度慢,因为每次使用增删操作时,都需要创建新的数组来实现增删操作.LinkedArrayList的特点是,增删速度快,查找速度慢.因为LinkedArrayList底层采用的是链表结构,所以需要进行增删操作时,只需要改变连接的地址就能实现,不需要创建行的数组,但是查找时,每次都是重头开始查找,所以查找速度慢.Vactor的特点是,他线程安全,是单线程的,所以他的速度比起其他多线程的集合要慢.
          Set集合分为HashSet和LinkerHashSet. Set集合下的特点是,无索引(所以不能使用带所以的方法),不可重复.
           HashSet 是无序的,底层是使用哈希表来实现的,每次存储数据时会计算对应的哈希值,不同直接添加相同会进行equals比较,加快了存储的速度.查找速度也快.
           LinkerHashSet是有序的,他的存储和HashSet相同,只不过多了一个链表来保证元素的有序性及存储和取出的顺序相同.
Map集合下分为HashMap,和LinkedHashMap.他们都是以键值对的方式来存取元素的,都必须要保证Key的值是唯一的.如果具有相同的键,那么就等同与List中的Set方法,会覆盖具有相同值的Value值,他们都可以使用自定义的数据类型,但是如果数据类型当成键时,必须重写hashCode()方法和equals()方法来保证键值的唯一性.
           HashMap底层采用哈希表来实现,他是无序的及存储和取出的顺序不同;
           LinkedHashMap是HashMap的子类,他的底层是通过哈希表加上链表来实现的,他是有序的,及存储和取出的顺序相同.他底层加的链表是为了保证存储的顺序和取出的顺序一致.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马