前言:
最近小编在写项目的时候碰到定义一些常用数据的问题,比如说颜色的常量有:白色、黑色、红色等等这样的话一般想到的是用:枚举类。但是我看项目中用的却是Map的另一个实现方式,所以引起了小编的好奇新大陆。那这么多废话赶快亮出代码
1.常用的HashMap:
这个Map的实现类HashMap是我们开发中常用的一个类,主要就是用Put和Get值,其中getOrDefault的方法是获取Map中是否存在Key存在则取其Value,没有则取后面自己定义的值。
2.双向DualHashBidiMap
这就是我上面说的可以用来替代枚举的一个Map,它是一个双向的Map,即它可以通过key获取value,也可以通过value获取key。
其中inverseBidiMap()方法是一个逆视图;
3.一对多MultiValueMap
MultiValueMap一个key可以存放多个value,其中values()和containsValue()方法分别用来返回Map中所有的值和判断该值是否存在(boolean)
4.固定大小LRUMap
LRUMap:大小固定。它不是同步的,也不是线程安全的,新增的元素个数大于允许的最大集合个数时,则会执行LRU淘汰算法。 所有的元素在LRUMap中会根据最近使用情况进行排序。最近使用的会放在元素的最前面(LRUMap是通过链表来存储元素内容). 所以LRUMap进行淘汰时只需要删除链表最后一个即可(即header.after所指的元素对象)
影响集合元素顺序的方法:
- 1.put 当新增加一个集合元素对象,则表示该对象是最近被访问的
- 2.get 操作会把当前访问的元素对象作为最近被访问的,会被移到链接表头
isFull():用来判断集合容量是否已满;
5.多个关键字创建MultiKeyMap
创建方式如下:
- MultiKeyMap.decorate(new LinkedMap())
- MultiKeyMap.decorate(new LRUMap())
- MultiKeyMap.decorate(new ReferenceMap())
——本篇到次结束—–