java map
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
所有键值对 — 参见 entrySet() 所有键 — 参见 keySet() 所有值 — 参见 values()访问元素
检索有关 Map 内容的信息但不更改 Map 内容。 get(Object key)返回与指定键关联的值containsKey(Object key)如果 Map 包含指定键的映射,则返回 truecontainsValue(Object value)如果此 Map 将一个或多个键映射到指定值,则返回 trueisEmpty()如果 Map 不包含键-值映射,则返回 truesize()返回 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();
这也符合设计模式或者面向对象的理论,只要实现了相同的接口和方法
只需要在这个创建的地方修改,使用不同的类来创建,其他的调用代码则无须修改。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。