乍一看,BidiMap很懞,但是只要知道 Bidi 是什么意思,那么这个 BidiMap 其实还是很好理解的。
一、简单介绍
所谓BidiMap,直译就是双向Map,可以通过key找到value, 也可以通过value找到key,这在我们日常的代码-名称匹配的时候很方便。
因为我们除了需要通过代码找到名称之外,往往也需要处理用户输入的名称,然后获取其键(代码)。
非常重要的一点是:BidiMap<K, V> 当中不光Key不能重复,Value也不能重复。
以下用是测试代码:
public class BidiMapTest { public static void main(String[] args) { System.out.println(StringUtils.center(" demoBidiMap ", 40, "=")); BidiMap<String, Object> bidiMap = new DualHashBidiMap<>(); bidiMap.put("BJ", "beijing"); bidiMap.put("SH", "shanghai"); bidiMap.put("TJ", "tianjin"); bidiMap.put("CQ", "chongqing"); Object value = bidiMap.get("BJ"); String key = bidiMap.getKey("shanghai"); System.out.println("根据Key(BJ)得到Value值:" + value); System.out.println("根据Value(shanghai)得到Key:" + key); System.out.println(StringUtils.repeat("=", 40)); // 下面放入一个重复的Key(BJ)和一个重复的Value(tianjin) bidiMap.put("BJ", "北京"); bidiMap.put("天津", "tianjin"); // {SH=shanghai, 天津=tianjin, BJ=北京, CQ=chongqing} System.out.println(bidiMap); System.out.println(StringUtils.repeat("=", 40)); } }
以上代码的输出结果是
============= demoBidiMap ==============
根据Key得到value:beijing
根据value得到Key:SH
========================================
{SH=shanghai, 天津=tianjin, BJ=北京, CQ=chongqing}
========================================
从以上结果中,我们可以看到,可以通过key找到value, 也可以通过value找到key。
而且,我们也往 BidiMap 中放入了一个重复的 Key(BJ),同时也放入了一个重的 Value(tianjin),但是在输出结果中,重复的 Key 会把值覆盖掉,重复的 Value 则会把 Key 覆盖掉。
二、详细介绍
2.1 接口声明 (Interface Declaration)
2.2 方法 (Methods)
Sr.No. | 方法和描述 |
1 | K getKey(Object value) 获取当前映射到指定值的键。大白话,就是 根据值获取键。 |
2 | BidiMap <V,K> inverseBidiMap() 获取此映射的视图,其中键和值相反。大白话,就是 键和值颠倒一下。 |
3 | V put(K key, V value) 将键值对放入Map中,替换之前的任何一对。大白话,就是 新增键值对,如果有重复的键或者值,则会把之前的覆盖掉。 |
4 | K removeValue(Object value) 删除当前映射到指定值的键值对(可选操作)。大白话,就是 删除键值对。 |
5 | Set <V> values() 返回此映射中包含的值的Set视图。大白话,就是 获取值的列表。 |
显示详细信息
2.3 方法继承 (Methods Inherited)
此接口从以下接口继承方法 –
- org.apache.commons.collections4.Get
- org.apache.commons.collections4.IterableGet
- org.apache.commons.collections4.Put
- java.util.Map
2.4 BidiMap接口示例
请看标题一里的示例内容,已经非常详细。
完结!