admin 管理员组文章数量: 887021
Map..
一、Map<K,V> (Map接口)
(1)类型参数:
K—此映射所维护的键的类型
V—映射值的类型
(2)Collection与Map的对比
(3)Map集合的特点:
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同也可以不同
3.Map集合中的元素,key是不允许重复的,value可以重复
4.Map集合中的元素,key和value是一一对应的
二、java.util.HashMap<k,v>集合 implements Map<k,v>接口
1.HashMap集合的特点:
(1)HashMap集合底层是哈希表,查询的速度特别快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+单向链表 / 红黑树(链表的长度超过8):提高查询的速度
(2)HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
2.LinkedHashMap的特点:
(1)LinkedHashMap集合底层是哈希表+链表(保证迭代顺序)
(2)LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
三、Map接口中的常用方法
1.public V put(k,v):把指定的键与指定的值添加到Map集合中
返回值:v
存储键值对的时候,k不重复,返回值v是null、
存储键值对的时候,k重复,会使用新的v来替换map中重复的value,返回被替换的value值
Map<String,String> map=new HashMap<>();String v1 = map.put("唐艺昕", "张若云");String v2 = map.put("唐艺昕", "张若昀");System.out.println(v2); //输出的是被替换的”张若云“,一般情况下put()不用接收返回值这个写法只是为了更好的理解map.put("孙怡","董子健");map.put("张嘉倪","买超");map.put("李晨","范冰冰");System.out.println(map);
2. public V remove(Object k):把指定的键所对应的键值对元素在Map集合中删除,反会被删除元素的值
k存在,返回被删除的值,k不存在,返回null
String v3 = map.remove("李晨");System.out.println(v3); //输出的是范冰冰System.out.println(map); //{孙怡=董子健, 唐艺昕=张若昀, 张嘉倪=买超}
3.public V get(Object k):根据指定的键,在Map集合中获取对应的值
k存在,返回对应的v值,k不存在,返回null
4.boolean containsKey(Object k):判断集合中是否包含指定的键
boolean v4 = map.containsKey("唐艺昕");System.out.println(v4); //true
5.keySet()
2 Map集合遍历的第一种方式:通过键找值的方式
实现步骤
(1)使用Map集合中的方法keySet(),把Map集合所有的k取出来,存储到一个set集合中
(2)遍历set集合,获取Map集合中的每一个k
(3)通过Map集合中的方法get(k),通过k找到v
Set<String> set = map.keySet();//使用迭代器进行遍历Iterator<String> it = set.iterator();while(it.hasNext()) {String key = it.next(); //取出来的是key值String value = map.get(key); //通过key来get value,此处是value的值System.out.println(key+"&"+value);}//还可以通过增强for循环for (String key1 : set) {String value1 = map.get(key1);System.out.println(key1+"&"+value1);}
3.Map.Entry<K,V>在Map接口中有一个内部接口Entry
(1)作用:当Map集合一创建,那么就会在Map集合中创建一个Entry对象,用来记录键与值(键值对对象,键与值的映射关系)
(2)entrySet():把Map集合中多个Entry对象取出来,存储到一个Set集合中去k
四、HashMap存储自定义类型键值
1.Map集合保证key值元素是唯一的:作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一
五、HahsMap中key不允许重复,无序
LinkedHahsMap中key不允许重复,有序
六、Hashtable<k,v>
1.对比:
Hashtable:底层是一个哈希表,是一个线程安全集合,是单线程集合,速度慢
HashMap:底层是一个哈希表,是一个线程不安全集合,是多线程集合,速度快
注意:Hashtable集合不能存储null值,null键,以前学过的其他集合都可以
2.Hashtable和Vector集合一样,在JDK1.2版本以后被更先进的(HashMap,ArrayList)取代了,但是Hashtable的子类Properties依然活跃【Properties集合是唯一和IO流相结合的集合】
本文标签: mAP
版权声明:本文标题:Map.. 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687842171h148063.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论