Map多种用法

前言:

​ 最近小编在写项目的时候碰到定义一些常用数据的问题,比如说颜色的常量有:白色、黑色、红色等等这样的话一般想到的是用:枚举类。但是我看项目中用的却是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

创建方式如下:

  1. MultiKeyMap.decorate(new LinkedMap())
  2. MultiKeyMap.decorate(new LRUMap())
  3. MultiKeyMap.decorate(new ReferenceMap())

——本篇到次结束—–