java.util.Map< k , v>集合
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>接口
HashMap集合的特点:
1.HasMap集合底层是哈希表:查询速度非常快
JDK1.8之前:数组+ 单向链表
JDK1.8之后:数组+ 单项链表/红黑树(当查询的长度超过8时),提高查询效率
2.HashMap集合它是一个无序的集合,即存放进去的元素顺序与取出的元素顺序不一定一致
java.util.LinkedHashMap<k, v >集合 extends HashMap<k, v>集合
LinkedHashMap<k, v >的特点:
1.LinkedHashMap集合底层是一个哈希表+链表(有链表就表示有序)
2.LinkedHashMap集合是一个有序的集合,存储进来的元素与取出的元素顺序相同
Map集合的第一种遍历方式:通过键找值的方式
Map集合中的方法:
Set< K> KeySet() 返回此映射中包含的键的set() 视图
实现步骤:
1.使用Map集合中的方法keySet(),把map集合所有的key取出来,存储到一个Set集合中
\2.遍历set集合,获取Map集合中的每一个key
3.通过Map集合中的方法get(Key),通过key找到value
Map集合的第二种遍历方式:使用Entry对象遍历
Map集合中的方法:
set<Map.Entry<k,v> entrySet()返回此映射中包含的映射关系的Set视图
实现的步骤:
1.使用Map集合中的方法entrySet(),把Map集合中的多个Entry对象取出来,存储到一个Set集合中来
2.遍历Set集合,取出每一个entry对象
3.使用Entry对象中的方法getKey()和getValue()获取键值对
HashMap存储自定义类型键值
Map集合保证了key值的唯一性
作为key的元素,必须重写hashcode和equals方法,以保证key唯一
-----------------------------------------------------------------------------------------------
HashMap存储自定义类型键值
key:String类型
String类必须重写hashcode和equals方法,以保证key唯一
value:Person类型
value可以重复(同名同年龄的人视为同一人)
自定义Person类
当自定义类Person作为K值时,需要在person类中重写hascode和equals方法,
保证K值唯一性
java.util.LinkedHashMap <K,V> extends HashMap<k,v>
Map 接口的哈希值和链表列表的实现,具有可预知的迭代顺序
底层原理:
哈希表+ 链表(记录元素的顺序)
java.util.HashTable<k,v> implentments Maps<K,V)
hashtable:底层是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
hashMap集合(之前学过的所有集合):可以存储null值,null键
hashtable不能存储null值,null键
hashtable和vactor集合一样,在jdk1.2版本之后被淘汰掉了,被<hashMap ,Arraylist>取代
hashtable的子类propertise依然活跃在历史舞台
propertise集合是一个唯一和io流相结合的集合
习题练习:
计算一个字符串中每个字符出现的个数
分析:
1.使用Scanner获取用户输入的字符串
2.创建Map集合,key是字符串中存储的字符,value是字符的个数
3.遍历字符串,获取每一个字符
4.使用获取到的字符,去Map集合判断是否存在
key存在:
通过字符(key),获取value数
value++
put(key,value)把新的value存储到Map集合中
key不存在:
put(key,1)
5.遍历集合,输出结果
[Map]的使用
最新推荐文章于 2023-05-16 09:48:57 发布