为了账号安全,请及时绑定邮箱和手机立即绑定

是否存在具有2个indizes /密钥数据结构的数据结构?

是否存在具有2个indizes /密钥数据结构的数据结构?

慕尼黑5688855 2019-04-18 18:15:25
Java中是否存在数据结构(java util,guava ...),它允许我存储“键值”对,也可以解释为值键?例:Datastructure d = new Datastructure();d.add(1, "foo");d.add(21 "bar");d.add(33 "hello");d.add(55 "world");一个像d.get1(1)应该返回的函数foo。一个像d.get2("foo")应该返回的函数1。一个像d.get1(33)应该返回的函数hello。一个像d.get2("hello")应该返回的函数33。...有什么东西可以这样运作吗?
查看完整描述

4 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

在Apache commons集合库中是BidiMap接口及其一些实现。接口有一个获取逆映射的方法,即交换键和值的角色的映射。

如果您不想使用此类,则可以在内部使用两个映射轻松实现自己的类。


查看完整回答
反对 回复 2019-05-15
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞


Java中没有这样的类,但你可以用你的方法做你想做的事:


Map<Object, Object> map = new HashMap<>();


map.put(1, "foo");

map.put(21, "bar");

map.put(33, "hello");

map.put(55, "world");

map.put("foo", 1);

map.put("bar", 21);

map.put("hello", 33);

map.put("world", 55);


System.out.println(map.get(1)); // foo

System.out.println(map.get("foo")); // 1

看起来很奇怪,但可以按照你的意愿工作。


或者您可以根据需要创建自己的类,也可以使用我展示的一个地图,或者两个地图,如: Map<Integer, String> map1... Map<String, Integer> map2...


希望能帮助到你。


查看完整回答
反对 回复 2019-05-15
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您正在寻找的内容基本上由Guava实现BiMap
你可以像这样使用番石榴的BiMap -

BiMap<Integer, String> biMap = HashBiMap.create();

biMap.put(1, "foo");

biMap.put(21, "bar");


System.out.println(biMap.get("1"))); //foo

System.out.println(biMap.inverse().get("bar"))); //21

链接:
番石榴BiMap指南
BiMap java doc

或者,你可以BiDiMap像这样使用常见的apache :

BidiMap<String, String> map = new DualHashBidiMap<>();

map.put(1, "foo");

map.put(21, "bar");

System.out.println(map.get(1)); //1


//reversing the mapping 

BidiMap<String, String> reversedMap = map.inverseBidiMap();

System.out.println(reversedMap.get("foo")); //1


查看完整回答
反对 回复 2019-05-15
  • 4 回答
  • 0 关注
  • 443 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信