Map集合
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.HashMap集合底层是哈希表:查询的速度特别快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+单向链表/红黑树(链表长度超过8):提高查询的速度
2.hashMap集合是一个无序集合,存储元素和取出怨怒是的顺序可能不一致
java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap集合是一个有序集合,存储元素和取出元素的顺序是一致的
import
Map集合的第一种遍历方式:通过键找值的方式
Map集合中的方法:
Set<K> keySet() 返回此映射中包含的键的Set视图
实现步骤:
1.使用Map集合中的方法keySet(),把Map集合中所有的Key取出来,存储到一个Set集合中
2.遍历Set集合,获取Map集合中的每一个Key
3.通过Map集合中的方法get(key),通过key找到value
import
Map集合遍历的第二种方式:使用Entry对象遍历
Map集合中的方法:
1.Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的视图
实现步骤:
1.使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中
2.遍历Set集合,获取每一个Entry对象
3.使用Entry对象中的方法getKey()和getValue()获取键与值
import
HashMap存储自定义类型键值
Map集合保证key是唯一的:
作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一
public
Person类
import
LinkedHashMap集合
java.util.LinkedHashMap<K,V> extends HashMap<K,V>
Map接口的哈希表和链接列表实现,具有可预知的迭代器顺序
底层原理:
哈希表+链表(记录元素的顺序)
import
Hashtable集合
java.util.Hashtable<K,V>集合 implements Map<K,V>接口
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程集合,速度快
HashMap集合(之前学的所有的集合):可以存储null值,null键
Hashtable结婚,不能存储null值,null键
Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的(HashMap,ArrayList)取代
Hashtable的子类Properties依然活跃在历史舞台
Properties集合是唯一和IO流相结合的集合
import
JDK9新特性
lis接口,Set接口,Map接口:增加了一个静态方法of,可以给集合一次性添加多个元素
static <E> list<E> of (E.. elements)
使用前提:
当集合中存储的元素的个数已经去欸的那个了,不再改变时使用
注意:
1.of方法只适用于list接口,Set接口,Map接口,不适用于接口的实现类
2.of方法的返回值是一个不可改变的集合,集合不必不能再使用add,put方法添加元素,否则会抛异常
3.Set接口和Map接口在调用of方法的时候,不能有重复元素,否则会抛出异常
public
Debug调试代码
HashTable和HashMap的区别详解 - 割肉机 - 博客园www.cnblogs.com