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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

今天我们学习了Map集合,请根据自己的理解回答下面问题:
1.Map接口下有几个子类,各自有什么特点?Map接口下常用的子类有HashMap和LinkedMap两个;
HashMap的特点:底层是哈希表结构,查询速度快,元素的存取顺序不能保证一致,并且键的值不能重复,值的值可以重复.
键和值可以存引用类型数据也可以存对象;但是,为了要保证键的唯一性,所以需要重写键值的hashCode()方法和equals()方法;
LinkedMap是HashMap的子类,底层在哈希表的基础上多加了一条链表来保证元素存取顺序一致.与HashMap一样,键值不能
重复,键和值可以存引用类型数据也可以存对象;LinkedMap通过哈希表结构保证键的唯一性,需要重写键值的hashCode()方法和equals()方法;

2.目前为止,我们所学的遍历map集合有几种方式?
有两种方式遍历map集合,一种是通过键找值的方式,一种是通过获取键值对的方式;
键找值: (1)调用KeySet方法获取map的所有键值,存入Set集合中;
            (2)遍历Set集合,通过map集合的get()方法获取每个键对应的值
键值对:(1)调用map集合的entrySet()方法获取集合中的所有键值对对象,存入Set集合中;
           (2)利用迭代器或者增强for遍历Set集合中的键值对对象;
           (3)键值对对象调用getKey()方法和getValue()方法获取键和值

3.请用自己的语言描述你所了解的集合体系

从顶层接口来看,分为Collection和Map两大接口;
Collection下又分为List和Set两大类,
(1)List集合的特点是存取有序,有索引值及其相关方法,元素可以重复;
List下有两大常用子类ArrayList和LinkedList;
ArrayList底层采用数组存储元素,所以特点是查询快,增删慢;
LinkedList底层采用链表结构,所以特点是查询慢,增删快;
两个子类看需求情况使用,还有一个比较老的子类Vector已经不怎么使用,特点是安全,效率低;
(2)Set集合的特点是元素存取无序,并且元素不能重复,没有索引;
Set集合下有两个常用子类HashSet和LinkedSet;
HashSet类的特点是元素存取无序,并且不能重复,具有良好的存取和查找性能;
LinkedSet类的特点是底层采用哈希表加链表的结构来实现元素存取有序,元素同样不可重复;

Map又称为双列集合,集合中的每个元素包含键和值两个部分,并且一一对应,键值唯一不能重复,值可以重复,
键和值都可以存放引用类型或对象,
Map接口下常用的实现类有HashMap集合、LinkedHashMap集合
HashMap集合存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需
要重写键的hashCode()方法、equals()方法
LinkedHashMap :HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链
表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的
hashCode()方法、equals()方法。

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