BiMap

Bimap提供了一种的新的集合类型,它提供了key和Value的双向关联的数据结构。

底层维护着两个map

什么意思呢,传统上,我们键值对的双向映射需要维护两个单独的map,并保持它们间的同步。但这种方法很容易出现,而且对于值存在map中的情况,会变得非常混乱。例如:

@GwtCompatible  public  interface  BiMap<K,V>  extends  Map<K,V>


Map<String, Integer> nameToId = Maps.newHashMap();
Map<Integer, String> idToName = Maps.newHashMap();
nameToId.put( "Bob" 42 );
idToName.put( 42 "Bob" );
//如果"Bob"和42已经在map中了,会发生什么?
//如果我们忘了同步两个map,会有诡异的bug发生...

BiMap<K,V>是种特殊的Map:

@Test
public  void  test3(){
     BiMap<String ,Integer> biMap= HashBiMap.create();
     biMap.forcePut( "we" , 1 );
     System.out.println(biMap);
     //反转map
     System.out.println(biMap.inverse());
     System.out.println(biMap.size());
}


1 V forcePut(K key, V value)
另一种put的形式是默默删除,在put(K, V)运行前的任何现有条目值值。
2 BiMap<V,K> inverse()
返回此bimap,每一个bimap的值映射到其相关联的键的逆视图。
3 V put(K key, V value)
关联指定值与此映射中(可选操作)指定的键。
4 void putAll(Map<? extends K,? extends V> map)
将所有从指定映射此映射(可选操作)的映射。
5 Set<V> values()
返回此映射中包含Collection的值视图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值