1.Map接口下有几个子类,各自有什么特点?
今天学了
HashMap集合:
1.存储数据采用哈希表结构(JDK1.8后,哈希表:数组+链表+红黑树(1.8之前没有)),存取顺序是无序的,
2.用键值对作为元素,一一对应,一个键(key)对应一个值(value),键是唯一的,不可以重复,值可以重复.
为了保证键是唯一的,需要键重写hashCode方法和equals方法
LinkedHashMap集合:
存储数据采用哈希表结构+链表结构,链表结构能保证存取元素的顺序一致,
哈希表也是为了保证键是唯一的,需要键重写hashCode方法和equals方法
2.目前为止,我们所学的遍历map集合有几种方式?
可以用迭代器和增强for
1.keySet方法
将map集合的键转换为set集合(map.keySet()),(while需要获取一个迭代器[set]获取,next()方法获取key值)
对Set集合进行遍历,在通过map 的 get(K key) 方法获取到 value,同时打印key,value
2.Entry键值对对象
嵌套类也称为内部类
Map接口中的一个内部接口Entry
作用: 当Map集合一创建,那么就会在集合中创建一个Entry对象,
用来记录键与值(赋值对对象,键与值的映射关系)--> 结婚证
可以用来遍历map双列集合
Set<Map.Entry<K,V>> 集合名 = map.entrySet();
通过集合名遍历
for (Entry<K, V> entry : entrySet) {}
entry获取getKey(),getValue()方法获取键值对
3.请用自己的语言描述你所了解的集合体系
1.有单列集合(List,Set)和双列集合(Map);
2.单列集合(顶层父接口(Collection集合)):
(1)List是有序的(存取一致),允许元素重复,带索引值的,并且能够用普通for进行遍历.
- List集合的子类: Vector集合、ArrayList集合、linkedList集合
(2)Set是无序的(存取不一致),不允许重复(需要保证元素唯一性,重写了hashCode方法和equals方法),没有索引,也就不能使用普通for进行遍历.
- Set集合的子类: TreeSet集合、HashSet集合(被LinkedHashSet继承(此集合是有序的!))
注意: Set集合下的 LinkedHashSet集合是有序的
3.双列集合:
(1)Map,存储的是键值对,一一对应,一个键(key)对应一个值(value)值,键必须是唯一的,元素可以重复.
(2)注意: 当键使用自定义数据类型时,为了保证键的唯一需要自定义类型的类重写hashCode方法和equals方法.
(2)实现类有:HashMap 、 LinkedHashMap ... |