Map集合

2019-09-30 07:19:15来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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:线程不安全,运行速度快。


原文链接:https://www.cnblogs.com/xiaozhu1017/p/11598781.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Eclipse 的快捷键

下一篇:JAVA知识点总结篇(一)