转: java 双向map
package tools;
import java.util.HashMap;
public class DuplexMap<K,V> {
    class Entry{
        K k;
        V v;
        public Entry(K k,V v){
            this.k=k;
            this.v=v;
        }
        public K getK() {
            return k;
        }
        public V getV() {
            return v;
        }
        public void setK(K k) {
            this.k = k;
        }
        public void setV(V v) {
            this.v = v;
        }
    }
    private HashMap<K,Entry> kEntyMap=new HashMap<K,Entry>();
    private HashMap<V,Entry> vEntyMap=new HashMap<V,Entry>();
    public boolean contains(K k){
        return kEntyMap.containsKey(k);
    }
    public boolean containsValue(V v){
        return vEntyMap.containsKey(v);
    }
    public V getByKey(K k){
        Entry e=kEntyMap.get(k);
        if(e==null){
            return null;
        }
        return e.getV();
    }
    public K getbyValue(V v){
        Entry e=vEntyMap.get(v);
        if(e==null){
            return null;
        }
        return e.getK();
    }
    public boolean put(K k,V v){
        if(k==null||v==null){
            return false;
        }
        Entry e=new Entry(k, v);
        if(contains(k)){
            remove(k);
        }
        if(containsValue(v)){
            removeByValue(v);
        }
        kEntyMap.put(k, e);
        vEntyMap.put(v, e);
        return true;
    }
    public V remove(K k){
        Entry e=kEntyMap.remove(k);
        if(e==null){
            return null;
        }
        vEntyMap.remove(e.getV());
        return e.getV();
    }
    public K removeByValue(V v){
        Entry e=vEntyMap.remove(v);
        if(e==null){
            return null;
        }
        kEntyMap.remove(e.getK());
        return e.getK();
    }
}
转自:http://www.oschina.net/code/snippet_83492_4187
转: java 双向map的更多相关文章
- apache_commons 之 双向Map DualHashBidiMap (使用及源码)
		在项目当中,经常出现需要根据Key值获取value:而且要求根据value获取key值,其实在commons-collections包中已经提供了此集合类.就是DualHashBidiMap类. (官 ... 
- java中Map,List与Set的差别
		java中Map,List与Set的差别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,而且同一个数组 ... 
- 错误:java.util.Map is an interface, and JAXB can't handle interfaces.
		问题: 在整合spring+cxf时报错java.util.Map is an interface, and JAXB can't handle interfaces. 解决方法: 将服务端的serv ... 
- Java中Map常用方法总结以及遍历方式的汇总
		一.整理: 看到array,就要想到角标. 看到link,就要想到first,last. 看到hash,就要想到hashCode,equals. 看到tree,就要想到两个接口.Comparable, ... 
- Java  基础 Map 练习题
		第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ... 
- java 遍历map 方法 集合 五种的方法
		package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ... 
- JAVA/Android  Map与String的转换方法
		在Android开发中 Map与String的转换在,在一些需求中经常用到,使用net.sf.json.JSONObject.fromObject可以方便的将string转为Map.但需要导入jar包 ... 
- java中map插入相同的key
		测试用例: package test; import org.junit.Test; import po.Person; import java.util.HashMap; import java.u ... 
- JAVA ,Map接口 ,迭代器Iterator
		1. Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ... 
随机推荐
- springboot使用neo4j
			springboot2.2使用neo4j第一次更新先放一些代码进来,下次加注释1.引入相应的包<dependency> <groupId>org.springframework ... 
- Python3中真真假假True、False、None等含义详解
			概述 在Python中,不仅仅和类C一样的真假类似,比如1代表真,0代表假.Python中的真假有着更加广阔的含义范围,Python会把所有的空数据结构视为假,比如[](空列表).{}(空集合).'' ... 
- IDE集成开发环境(pycharm)、基本数据类型、用户的交互、运算符
			一.IDE集成开发系统pycharm 目的:让Python编程更方便.高效. pycharm的简单定义: PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提 ... 
- 在论坛中出现的比较难的sql问题:33(递归 连续日期问题  )
			原文:在论坛中出现的比较难的sql问题:33(递归 连续日期问题 ) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有必 ... 
- Spring AOP 多个切点实现:JdkDynamicAopProxy
			Spring Aop 的底层生成代理类i的实现除 jdk的动态代理技术外,还用到了Cglib,不过在封装两者的设计原理上相差不大,只是底层工具不同而已. 本文只分析JdkDynamicAopProxy ... 
- Dev  GridControl   子集合标题
			显示效果: 设置: this.gridView3.OptionsView.ShowViewCaption = true; this.gridView3.ViewCaption = "资产明细 ... 
- eval函数和isNaN函数
			(一)eval函数定义:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. (二)语法:eval(string)string必需. (三)返回值:通过计算 string ... 
- python OpenCV使用
			关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C ... 
- sql server with as只能查询一次
			WITH Emp AS (SELECT acc.* FROM GXSpreadDB.dbo.gxs_account acc LEFT JOIN RYAccountsDB.dbo.AccountsInf ... 
- 阿里云给自己实例扩容-扩展分区和文件系统_Linux系统盘
			阿里云买了台服务器ecs 磁盘容量40g 发现已经用了30g了 赶紧扩容 进入 e'cs实例 进入左边菜单 存储与快照 然后选择右边的扩容 然后支付 成功后 进入服务器 df -h 发现怎么还是没变 ... 
