吴香斌
1.Map接口下有几个子类,各自有什么特点?
1)HashMap,是一个采用哈希表实现的键值对集合,是Map接口的主要实现类,特点如下:
a.由于底层为哈希表数据结构同时兼具查询和增删优势,所以HashMap的查询和增删都比较快.
b.元素是无序的(所谓的无序指的是存储与获取顺序不一致)
c.由于Map接口没有继承iterable接口,所以Iterable接口特有的迭代器无法使用,所以Map集合的迭代需要先转化为Set集合.
2)LinkedHashMap,是HashMap的子类,是有HashMap和双向链表组成的,是有序的HashMap.
2.目前为止,我们所学的遍历map集合有几种方式?
1) 通过Map.keySet, 返回的是key值的Set集合,然后通过调用get(key)方法,得到对应value值,再遍历Set集合,就实现了遍历Map集合.
2) 通过Map.entrySet,返回的是Entry键值对Set集合,然后通过Entry对象调用getKey和getValue方法,获取对应键和值,再遍历Set集合,就实现了遍历Map集合.
3) 通过Map.values,返回的是values值的Collection集合,只能遍历value值
3.请用自己的语言描述你所了解的集合体系
目前已经学习的集合体系有Collection和Map两种体系.
Collection集合是单列集合,只能同时存储一种类型的数据.
Map集合是key-value映射关系的双列集合,可以同时存储两种类型的数据.
在选择集合的时候,可以参考下面的选择方式:
1)List集合类:当需要查询和有序的遍历的时候,使用ArrayList. 当还需要大量增删工作的,使用LinkedList集合.
2)Set集合类:当需要保证元素唯一性时,或者需要对一些元素进行相同元素过滤时,可以使用HashSet集合.如果还要求有排序功能,使用LinkedHashSet
3)HashMap集合类:当需要两种元素进行一一对应时,可以使用HashMap,存取是无序的. 需要存取有序的,使用LinkedHashMap.
|