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

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。


...


有什么东西可以这样运作吗?


慕尼黑5688855
浏览 444回答 4
4回答

绝地无双

在Apache commons集合库中是BidiMap接口及其一些实现。接口有一个获取逆映射的方法,即交换键和值的角色的映射。如果您不想使用此类,则可以在内部使用两个映射轻松实现自己的类。

翻过高山走不出你

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)); // fooSystem.out.println(map.get("foo")); // 1看起来很奇怪,但可以按照你的意愿工作。或者您可以根据需要创建自己的类,也可以使用我展示的一个地图,或者两个地图,如: Map<Integer, String> map1... Map<String, Integer> map2...希望能帮助到你。

慕尼黑8549860

您正在寻找的内容基本上由Guava实现BiMap。你可以像这样使用番石榴的BiMap -BiMap<Integer, String> biMap = HashBiMap.create();biMap.put(1, "foo");biMap.put(21, "bar");System.out.println(biMap.get("1"))); //fooSystem.out.println(biMap.inverse().get("bar"))); //21链接:-&nbsp;番石榴BiMap指南-&nbsp;BiMap&nbsp;java doc或者,你可以BiDiMap像这样使用常见的apache&nbsp;:BidiMap<String, String> map = new DualHashBidiMap<>();map.put(1, "foo");map.put(21, "bar");System.out.println(map.get(1)); //1//reversing the mapping&nbsp;BidiMap<String, String> reversedMap = map.inverseBidiMap();System.out.println(reversedMap.get("foo")); //1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java