Map集合

一、Map父接口

  • Map接口的特点:

    • 用于存储任意键值对(Key -Value)

    • 键:无序、无下标、不允许重复(唯一)

    • 值:无序、无下标、允许重复

  • 方法:

    • V put(K key,V value); //将对象存入到集合中,关联键值。key重复则覆盖原值。

    • Object get(Object key); //根据键获取对应的值

    • KeySet<K> ; //返回所有key

    • Collection<V> values(); //返回包含所有值的Collection集合

    • EntrySet<Map.Entry<K,V>>; //键值匹配的Set集合


二、Map集合的实现类

  • HashMap

    • JDK1.2版本,线程不安全,运行效率快;允许用null作为key或是value

    • 初始容量16,默认加载因子0.75(超过百分之七十五就扩容),扩容为原来大小的一倍,也就是32

    • 存储结构:哈希表(数组+链表+1.8之后的红黑树)

    • 使用key的hashCode和equals作为重复依据

    • 当链表的长度大于8,数组的长度大于64,就会把该节点转换为红黑树

    • 1.8之前链表头插入,之后尾插入

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 HashMap初始容量大小
static final int MAXIMUM_CAPACITY = 1 << 30;//HashMap的数组最大容量
static final float DEFAULT_LOAD_FACTOR = 0.75f;//默认加载因子
static final int TREEIFY_THRESHOLD = 8; //jdk1.8 当链表长度大于8时,调整成红黑树
 static final int UNTREEIFY_THRESHOLD = 6; //jdk1.8 当链表长度小于6时,调整成链表
static final int MIN_TREEIFY_CAPACITY = 64; //jdk1.8 当链表长度大于8并且集合元素个数大于等于64时,调整成红黑树
transient Node<K,V>[] table; //哈希表中的数组
size();//元素个数
  • HashTable:

    • JDK1.0版本,线程安全,运行效率慢;不允许null作为key或是value

  • Properties:

    • Hashtable的子类,要求key和value都是String,通常用作配置文件的读取

  • TreeMap:

    • 实现了SortedMap接口(是Map的子接口),可以对key自动排序

    • 要求添加元素时,必须重写Comparable接口,也可以在创建时使用Comparator实现类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值