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的更多相关文章

  1. apache_commons 之 双向Map DualHashBidiMap (使用及源码)

    在项目当中,经常出现需要根据Key值获取value:而且要求根据value获取key值,其实在commons-collections包中已经提供了此集合类.就是DualHashBidiMap类. (官 ...

  2. java中Map,List与Set的差别

    java中Map,List与Set的差别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,而且同一个数组 ...

  3. 错误: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 ...

  4. Java中Map常用方法总结以及遍历方式的汇总

    一.整理: 看到array,就要想到角标. 看到link,就要想到first,last. 看到hash,就要想到hashCode,equals. 看到tree,就要想到两个接口.Comparable, ...

  5. Java 基础 Map 练习题

    第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...

  6. java 遍历map 方法 集合 五种的方法

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  7. JAVA/Android Map与String的转换方法

    在Android开发中 Map与String的转换在,在一些需求中经常用到,使用net.sf.json.JSONObject.fromObject可以方便的将string转为Map.但需要导入jar包 ...

  8. java中map插入相同的key

    测试用例: package test; import org.junit.Test; import po.Person; import java.util.HashMap; import java.u ...

  9. JAVA ,Map接口 ,迭代器Iterator

    1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

随机推荐

  1. 使用redis调用lua脚本的方式对接口进行限流

    java端实现: //初始化一个redis可执行的lua DefaultRedisScript<List> defaultRedisScript = new DefaultRedisScr ...

  2. JWT知识整理

    JSON Web Token:(https://jwt.io/) JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-co ...

  3. 【HC89S003F4开发板】 2调度器

    HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...

  4. c++ (1) c++ 与c 的区别

    可以说c++ 语言在c基础上扩展了许多  在学习玩c语言之后  学习c++ 会发现容易一些  但是c++也有优越于c 的地方 c++ 与c 语言都属于本地编译型语言 ,直接编译成本地编译码,运行特别快 ...

  5. Java基础IO类之打印流

    package IODemo; import java.io.*; /* 打印流 : 很方便的进行输出 字节打印流 增强输出功能 字符打印流 */ public class PrintStreamDe ...

  6. iview前台端口设置,跨域端口设置

    前台启动默认端口: 跨域端口: 完毕

  7. gulp做的前端代码压缩报错,揭示具体错误 信息

    用gulp做的前端代码压缩,今天在打包的时候发现打包出错了.报的错误是--unable to minify JavaScript.但是至于为什么会不能打包,表示很困惑,然后通过一番搜索,最后得出了问题 ...

  8. An unavoidable detour for home CodeForces - 814E (dp)

    大意: 给定一棵树每个点的度数, 求所有满足条件的树的个数 每个点到$1$的最短路唯一 假设$l_i$为点$i$到$1$的最短距离, 那么$l_i\ge l_{i-1}$ 每个点度数范围$2\le d ...

  9. MyBatis Generator 自动生成的POJO对象的使用(一)

    MyBatis Generator 会自动生成以下几种类型的对象(除非你使用MyBatis3DynamicSql 的运行环境): Java Model Objects(总是生成) SQL Map Fi ...

  10. MySQL 体系结构及存储引擎

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...