学习Java的第四十二天(map)

Map:

双列数据,存储key-value对的数据

HashMap:

作为map的主要实现类,线程不安全,效率高,可以存储null的key和value

Hashtable

作为古老的实现类,线程安全的,效率低,不能存储null的key和value

LinkedHashMap

保证在遍历map元素时,可以按照添加的顺序实现遍历,对于频繁地遍历操作,此类执行效率高于HashMap

TreeMap

保证按照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排序或定制排序

Properties

常用来处理配置文件,key和value都是String类型

Map结构理解

Map中的key:无序、不可重复,使用set存储所有的key

Map中的value:无序、可重复,使用collection存储所有的value

一个键值对:key-value构成一个entry对象

Map中的entry:无序不可重复,使用set存储所有的entry

HashMap的底层实现原理

//在实例化以后,底层创建了长度为16的Entry[] table
HashMap map = new HashMap();
...
//首先,调用key1所在类的hashCode()计算key1哈希值
//此哈希值经过某种算法计算之后,得到在Entry数组中的存放位置
//如果此位置上的数据为空,此时的key1-value1添加成功
//如果此位置上的数据不为空且key1的哈希值与已经存在的数据的哈希值都不相同,则key1-value1添加成功
//如果此位置上的数据不为空且key1的哈希值与已经存在的某个数据(key2-value2)的哈希值相同,则继续比较,调用key1所在类的equals()方法
//如果equals()方法返回false,则key1-value1添加成功
//如果equals()方法返回true,使用value1替换value2
map.put(key1,value1);
...

默认的扩容方式:扩容到原来容量的二倍,并将原有的数据复制过来

常用方法

Object put(Object key,Object value):将指定的key-value添加到当前map对象中

Object putAll(Map m):将m中的key-value对存放到当前的map对象中

Object remove(Object key):移除指定key的key-value对,并返回value

void clear():清空当前map中的所有数据

Object get(Object key):获取指定key对应的value

boolean containsKey(Object key):是否包含指定的key

boolean containsValue(Object value):是否包含指定的value

int size():返回map中key-value对的个数

boolean isEmpty():判断map是否为空

boolean equals(Object obj):判断map与obj是否相等

Set keySet():返回所有key构成的set集合

Collection values():返回所有value构成的collection集合

Set entrySet():返回所有key-value对构成的set集合

Collections工具类

reverse(List):反转list中元素的顺序

shuffle(List):对list集合元素进行随机的排列

sort(List):根据元素的自然排序对指定List集合元素按升序排序

sort(List,Comparator):根据指定Comparator产生的顺序对List集合进行排序

swap(List,int,int):将指定List中的i处元素和j处元素进行交换

Object max(Collection):根据元素的自然排序,返回给定集合中的最大元素

Object max(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最大元素

Object min(Collection):根据元素的自然排序,返回给定集合中的最大元素

Object min(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最大元素

int frequency(Collection,Object):返回指定集合中指定元素的出现次数

void copy(List dest,List src):将src的内容复制到dest中

boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换list中的所有旧值

Collections类中提供多个synchronizedXxx()方法,该方法可将指定集合包装为线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值