Map集合,map集合有哪些
Map集合,map集合有哪些
1、Map集合的特点:
(1)每次存储一对元素,即键值对(key,vlaue);
(2)key和value的数据类型可以相同,也可以不同;
(3)key不能重复,如果key相同,后面存储的value会把前面的value覆盖;
2、Map接口的实现类:
(1)HashMap:无序集合,存储元素和取出元素的顺序可能不一致;允许存储null值、null键;
底层数据结构:哈希表
(2)LinkedHashMap:有序集合,存储元素和取出元素的顺序一直;
底层数据结构:哈希表+链表
3、哈希表数据结构(链表,数组结合体)
(1)特点:存储、取出快;线程不安全,运行快;无序,没有索引;不存储重复元素。
(2)实现原理:(竖向代表数组,java中,数组的初始长度默认为16,加载因子默认为0.75,即存储数据时,数组的长度达到16*0.75=12时,数组扩大为原来的两倍(数组在哈希);横向代表链表)
(3)存储过程:添加一个键值对时,首先计算key的hash值,相同hash值的元素放在一个数组元素(例:a[0])中,形成链表,即一个数组元素中存放的是具有相同hash值的链表。
当链表的长度太长时,链表就转为红黑树,这样大大提高了查找的效率。
4、HashMap的方法:
(1)创建对象:Map<key的类型,value的类型> map=new HashMap<key的类型,value的类型>();
例:Map<String,Integer> map=new HashMap<String,Integer>();
(2)存储元素:V map.put(K,V); 一般情况下返回null,存储重复键时,返回覆盖之前的值;
(3)取出元素:V map.get(K); 通过键,获取值,如果集合中没有这个键,返回null;
(4)移除元素: V map.remove(K); 移除集合中的键值对,返回被移除之前的值;
(5)map集合遍历:
方法一:利用键获取值
调用map集合的方法keySet,将所有的键存储到Set集合中,利用迭代器或增强for,遍历Set集合,获取Set集合中的所有元素(即map中的键),调用get方法,通过键获取值
例:Set<Key类型> set=map.keySet();
Iterator<Key类型> it=set.iterator();
while(it.hasNext()){
Key类型 key=it.next();
Value类型 value=map.get(key);
}
方法二:利用键值对映射关系
调用map集合的方法entrySet,将集合中的映射关系对象存储到set集合中,利用迭代器或增强for,遍历Set集合,获取Set集合中的所有元素(映射关系对象Map.Entry<K类型,V类型>),
通过映射关系对象的方法getKey(),getValue()获取相应的Key和Value
例:Set<Map.Entry<K类型,V类型>> set=map.entrySet();
for(Map.Entry<K类型,V类型> entry:set){
K类型 key=entry.getKey();
V类型 value=entry.getValue();
}
5、Hashtable:Map的接口实现类,方法与HashMap一样,
不同点:Hashtable:线程安全,运行速度慢;
HashMap:线程不安全,运行速度快。
相关文章
- 暂无相关文章
用户点评