Map
2016-04-27 22:42:02 7 举报
java集合类2/2
作者其他创作
大纲/内容
EnumMap是一个与枚举类一起使用的Map实现,EnumMap中的所有key都必须是单个枚举类的枚举值。创建EnumMap时必须显示或隐式指定它对应的枚举类。EnumMap在内部以数组形式保存,实现形式非常紧凑、高效。EnumMap根据key的自然顺序(即枚举值在枚举类中的定义顺序)来维护key-value对的顺序。EnumMap不允许使用null作为key,但允许使用null作为value。
void clear()boolean containsKey(Object key)boolean containsValue(Object value)Set entrySet()Object get(Object key)boolean isEmpty()
EnumMap
Properties类用于处理属性文件,把Map对象和属性文件关联起来,可以把Map对象中的key-value对写入属性文件中,也可以把属性文件中的“属性名=属性值”加载到Map对象中。由于属性文件里的属性名、属性值只能是字符串类型,所有Properties里的key、value都是字符串类型。
TreeMap是一个红黑树数据结构,每个key-value对即作为红黑树的一个节点。TreeMap存储key-value对时,需要根据key对节点进行排序。有两种排序方式:自然排序,定制排序。
Map.Entry firstEntry()Object firstKey()Map.Entry lastEntry()Object lastKey()Map.Entry higherEntry(Object key)Object higherKey(Object key)Map.Entry lowerEntry(Object key)Object lowerKey(Object key)
Entry
IdentityHashMap的实现机制与HashMap基本相似,但IdentityHashMap判断两个key相等当且仅当两个key严格相等(key1==key2)v
WeakHashMap与HashMap用法相似,区别:HashMap的Key保留了对实际对象的强引用,意味着只要该HashMap对象不被销毁,该HashMap的所有key引用的对象就不会被垃圾回收;WeakHashMap的key只保留了对实际对象的弱引用,意味着如果WeakHashMap对象的key所引用的对象没有被其他强引用变量所引用,则这些key所引用的对象可能被垃圾回收,WeakHashMap也可能自动删除这些key所对应的key-value对。
HashTable
Map保存具有映射关系的数据如果把Map里所有key放在一起来看,它们就组成了一个Set集合。Map确实包含了一个keySet()方法,用于返回Map里所有key组成的Set集合。Map实现类和子接口中的Key集的存储形式和对应Set集合中元素的存储形式完全相同。Map与Set的关系非常密切,Map提供了一个Entry内部类来封装key-value对,而计算Entry存储时只考虑Entry封装的key。Java先实现了Map,然后通过包装一个所有value都为null的Map就实现了Set集合。
WeakHashMap
Map
使用双向链表来维护key-value对的次序,负责维护Map的迭代顺序,迭代顺序与key-value对的插入顺序保持一致。LinkedHashMap需要维护元素的插入顺序,因此性能略低于HashMap的性能,但以链表维护内部顺序,所以迭代访问Map里的全部元素时将有较好的性能。
SortedMap
TreeMap判断两个key相等的标准是:两个key通过compareTo()方法返回0。
Hashtable和HashMap区别:1.Hashtable是一个线程安全的Map实现,HashMap是线程不安全的实现,HashMap比HashTable的性能高一点。2.Hashtable不允许使用null作为key和value,HashMap可以使用null作为key或value。Hashtable是一个古老的Map实现类,不建议使用。
identityHashMap
TreeMap
HashMap
LinkedHashMap
Properties
Object getKey()Object getValue()Object setValue(V value)
收藏
收藏
0 条评论
下一页