java.util 最常用的集合类之一是Map ,map提供了一个通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。常用到的有hashmap和hashtable。
成都创新互联公司专注于汪清网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供汪清营销型网站建设,汪清网站制作、汪清网页设计、汪清网站官网定制、小程序制作服务,打造汪清网络公司原创品牌,更为您提供汪清网站排名全网营销落地服务。
[@more@]Map 的接口和方法覆盖的方法。 我们将这 Object 的这两个方法覆盖,以正确比较 Map 对象的等价性。
equals(Object o) | 比较指定对象与此 Map 的等价性 |
hashCode() | 返回此 Map 的哈希码 |
其他方法
clear() | 从 Map 中删除所有映射 |
remove(Object key) | 从 Map 中删除键和关联的值 |
put(Object key, Object value) | 将指定值与指定键相关联 |
clear() | 从 Map 中删除所有映射 |
putAll(Map t) | 将指定 Map 中的所有映射复制到此 map |
如果我们使用putAll,则map可以自动扩展大小。如果使用put,建议在创建map的时候使用loadfactor自动扩展以提高效率。
查看 Map
访问元素
检索有关 Map 内容的信息但不更改 Map 内容。
get(Object key) | 返回与指定键关联的值 |
containsKey(Object key) | 如果 Map 包含指定键的映射,则返回 true |
containsValue(Object value) | 如果此 Map 将一个或多个键映射到指定值,则返回 true |
isEmpty() | 如果 Map 不包含键-值映射,则返回 true |
size() | 返回 Map 中的键-值映射的数目 |
key唯一但是value不一定唯一,所以使用containsValue的时候可能效率会较低。
hash技术
int hashvalue = (key.hashCode() & 0x7FFFFFFF) % table.length;
需要考虑和处理hash collision,如果是使用已有的则不需要考虑,如果自己实现hashmap,
则需要考虑和处理对应的case。
效率问题:之前使用的时候简单创建,基本上都没有初始化大小和负载因子,现在看了一下
jdk的help才发现有这两个参数可以在很多时候提高性能。
在创建map的时候建议使用
Map userMap = new HashMap();
来替代
HashMap userMap = new HashMap();
这也符合设计模式或者面向对象的理论,只要实现了相同的接口和方法
只需要在这个创建的地方修改,使用不同的类来创建,其他的调用代码则无须修改。
网站标题:javamap
文章位置:http://kswsj.cn/article/ijhcde.html