java核心技术10阅读(九)-映射

映射用来存放键 / 值对。
基本映射操作
HashMap和TreeMap,HashMap对键进行散列,TreeMap用键的整体顺序对元素进行排序。散列稍微快一些,如果不需要按照排列顺序访问键,就最好选择散列。
更新映射项
counts.merge(word, 1, Integer::sum);
将把 word与 1关联,否则使用 Integer::sum 函数组合原值和 1 (也就是将原值与 1 求和)。
映射视图
映射的视图(View ):键集、值集合(不是一个集)以及键 / 值对集,他们是实现了Collection 接口或某个子接口的对象。
Set<Map.Entry<K, V>> entrySet()
返回 Map.Entry对象(映射中的键 / 值对)的一个集视图。可以从这个集中删除元素,它们将从映射中删除,但是不能增加任何元素。
弱散列映射
垃圾回收器跟踪活动的对象。只要映射对象是活动的, 其中的所有桶也是活动的,它们不能被回收。
当对键的唯一引用来自散列条,WeakHashMap将与垃圾回收器协同工作一起删除键 / 值对。
链接散列集和映射
LinkedHashSet 和 LinkedHashMap类用来记住插人元素项的顺序。
链接散列映射将用访问顺序, 而不是插入顺序,对映射条目进行迭代。每次调用 get 或
put, 受到影响的条目将从当前的位置删除,并放到条目链表的尾部(只有条目在链表中的位 置会受影响,而散列表中的桶不会受影响。一个条目总位于与键散列码对应的桶中)。
LinkedHashMap<K, V>(initialCapacity, loadFactor, true)
访问顺序对于实现高速缓存的“ 最近最少使用” 原则十分重要。例如,可能希望将访问 频率高的元素放在内存中,而访问频率低的元素则从数据库中读取。。当在表中找不到元素项 且表又已经满时,可以将迭代器加入到表中,并将枚举的前几个元素删除掉。这些是近期最 少使用的几个元素。
枚举集与映射
EmimSet是一个枚举类型元素集的高效实现。由于枚举类型只有有限个实例,所以
EnumSet 内部用位序列实现。如果对应的值在集中,则相应的位被置为 1。
视图
keySet方法返回一个实现 Set 接口的类对象,这个类的方法对原映射进行操作。这种集合称为视图。
视图有一些局限性,即可能只可以读、无法改变大小、只支持删除而不支持插入,这些与映射的键视图情况相同。如果试图进行不恰当的操作,受限制的视图就会抛出一 个 UnsupportedOperationException。

发布了15 篇原创文章 · 获赞 1 · 访问量 127

猜你喜欢

转载自blog.csdn.net/qq_17236715/article/details/105059600