Map集合
来源:互联网 发布:广州网站搜索优化 编辑:程序博客网 时间:2024/06/16 06:18
一.概述
Map集合没有继承Collection接口,它提供的是key到value的映射.Map中不能包含相同的key,一个key只能映射一个value.
Map集合产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象再映射中的存储位置.
Map集合包括Map接口以及Map接口的所有实现类
二.Map接口
常用方法:
举个栗子:
输出结果为:
三.Map接口的实现类
Map接口实现类有HashMap,TreeMap,LinkedHashMap,WeakHashMap,ConcurrentHashMap,IdentityHashMap.
1)HashMap:
1.一般用HashMap类实现Map集合,因为HashMap是基于哈希表的Map接口的实现类,HashMap能通过哈希码对其内部的映射关系进行快速查找,添加和删除映射关系效率更高.另外hashCode()是根类Object的方法,因此Java的对象都能产生散列码
2.HashMap允许使用null值和null键,但必须要保证键的唯一性,它不保证映射的顺序,而且不保证该顺序恒久不变
2)LinkedHashMap:
类似于HashMap.为了提高速度,它散列化所有元素,但是迭代遍历它的时候,取得的键值对的顺序是它的插入次序(当你调用putAll()方法时,传进来的map的键值对顺序是什么样的,LinkedHashMap输出的顺序就是什么样的),或者是最近最少使用(LRU)的次序.只比HashMap慢一点,但是迭代访问时比较快,因为它使用列表维护内部次序
3)TreeMap:
1.TreeMap中的映射关系存在一定的顺序,该顺序由Comparable和Comparator决定,它不仅实现了Map接口还实现了java.util.SortedMap接口(TreeMap是SortedMap现阶段的唯一实现),它的映射关系是根据键对象按照一定的顺序排列的,因此不允许键为null.
2.TreeMap带有subMap()方法,它可以返回一个子树.
4)WeakHashMap:
允许释放映射所指向的对象.如果映射之外没有引用指向某个"键",则此"键"可以被垃圾收集器回收.
5)ConcurrentHashMap:
线程安全的Map,不涉及同步加锁.
6)IdentityHashMap:
使用==代替equals()对键进行比较的散列映射.
下面举个例子看看HashMap与TreeMap输出的映射顺序:
输出结果为:
可以看到HashMap类实现Map集合没有一定的映射顺序,而TreeMap则是根据key值的升序进行排列.(如果看不到效果,请增加样本容量).
以上面的代码为例,看一看TreeMap的几个方法:
firsKey():返回第一个Key
lastKey():返回最后一个Key
subMap(String fromKey, String toKet):返回从fromKey到toKey这个范围内的Map子集
headMap(String toKey):返回tokey之前的Map子集
tailMap(String fromKey):返回包括fromKey在内以及它之后的Map子集
代码如下:
0 0
- Map 集合
- Map集合
- Map集合
- map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Android ImageView 正确使用姿势
- JavaGUI
- ural 1820. Ural Steaks -思维题
- 移动端自适应布局----rem字体
- 静态库和共享库
- Map集合
- 欢迎使用CSDN-markdown编辑器
- C++:struct和union 内存字节对齐问题
- 利用oracle中的序列巧解并发流水号问题
- Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy
- 基本 数据库DB
- vmware虚拟机磁盘扩容全纪录
- 时间和空间复杂度
- HDU2043_密码