1.Map接口的子类有什么特点,谈谈你所了解的Map实现类?
答:
Map接口是双列集合的顶层接口,它是键值对的形式存储数据的,键值是一一对应的,并且键是唯一的而值不是。
Map接口有HashMap和TreeMap两个子类
HashMap:1.底层数据结构是哈希表;
2.元素存取也是无序的
3.HashMap还有可以存储Null,但是Null也会遵循唯一的特点
4.底下还有LinkedHashMap子类,它是有序的。
TreeMap:
1.使用泛型中类的自然顺序排序
2.使用Comparator比较器进行比较的。
(Comparable和Comparator两种比较器,后者更有利于后期维护)
2.目前为止,我们所学的遍历map集合有几种方式?
答:两种;
1.通过键找值。
获取所有键的集合。用keySet()方法实现
遍历键的集合,获取到每一个键。用增强for实现
根据键去找值。用get(Object key)方法实现
2.通过获取键值对对象集合
获取所有键值对对象的集合
Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
遍历键值对对象的集合,得到每一个键值对对象
用增强for实现,得到每一个Map.Entry
根据键值对对象获取键和值
用getKey()得到键
用getValue()得到值
3.请用自己的语言描述你所了解的集合体系
答:集体体系分为单列和双列两种;
单列:
Collection接口是单列集合的顶层接口,它没有索引值,
Collection接口底下还有两个子接口List,Set。
List接口:
特点:1.有序;2.元素可以重复;3.有索引值
底下有ArrayList和LinkedList两个实现类
ArrayList底层数据结构是数组,所以有着查询快(数组有索引值,能够快速定位元素),
增删慢(数据增删需要创建出新的数组),两个特点。
LinkedList底层数据结构是链表,所以有着查询慢(链表查询每次都是从头开始查起),
增删快的特点(链表在增删数据只需改变下一个元素的地址值),
两个特点。
Set接口:
特点:1.无序(底层是哈希表);
2.元素不可重复(底层是哈希表);
3.没有索引值(只能使用迭代器和增强for循环遍历)
底下有HashSet和TreeSet两个实现类
HashSet底层是由哈希表组成(数组+链表/红黑树),所以HashSet集合是无序、不重复的
HashSet集合保证元素不重复的,是需要重写hashCode()、equals()两个方法。
HashSet底下还有一个LinkedHashSet类,它是有序的
TreeSet集合它可以根据元素的进行自然顺序排序,也可以通过Comparable或者Comparator进行自定义排序。
双列:
Map接口是双列集合的顶层接口,它是键值对的形式存储数据的,键值是一一对应的,并且键是唯一的而值不是。
Map接口底下有HashMap和TreeMap两个实现类
HashMap:
1.底层也是哈希表;2.元素存取也是无序的
HashMap还有可以存储Null,但是Null也会遵循唯一的特点
底下还有LinkedHashMap实现类,它是有序的。
TreeMap:
1.使用泛型中类的自然顺序排序
2.使用Comparator比较器进行比较的。(Comparable和Comparator两种比较器,后者更有利于后期维护) |