当前位置: 首页 > 面试题库 >

在Java中反向HashMap键和值

狄鸿禧
2023-03-14
问题内容

这是一个简单的问题,我有一个简单的HashMap,我想将其反转键和值。

HashMap<Character, String> myHashMap = new HashMap<Character, String>();
myHashMap.put('a', "test one");
myHashMap.put('b', "test two");

我想创建一个新的HashMap,在其中放置相反的内容。

HashMap<String, Character> reversedHashMap = new HashMap<String, Character>();
e.g. Keys "test one" & "test two" and values 'a' & 'b'.

问题答案:

它们都是独一无二的,是的

如果您确定自己的值是唯一的,则可以遍历旧地图的条目。

Map<String, Character> myNewHashMap = new HashMap<>();
for(Map.Entry<Character, String> entry : myHashMap.entrySet()){
    myNewHashMap.put(entry.getValue(), entry.getKey());
}

另外,您可以使用Guava提供的双向地图,并使用inverse()方法:

BiMap<Character, String> myBiMap = HashBiMap.create();
myBiMap.put('a', "test one");
myBiMap.put('b', "test two");

BiMap<String, Character> myBiMapInversed = myBiMap.inverse();

随着java-8的发布,您也可以通过以下方式进行操作:

Map<String, Integer> map = new HashMap<>();
map.put("a",1);
map.put("b",2);

Map<Integer, String> mapInversed = 
    map.entrySet()
       .stream()
       .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey))

最后,我将我的贡献添加到了质子包装库中,该库包含Stream
API的实用程序方法。这样,您可以这样做:

Map<Character, String> mapInversed = MapStream.of(map).inverseMapping().collect();


 类似资料:
  • 问题内容: 我想存储值并从Java HashMap中检索它们。 这是我到目前为止所拥有的: 我想从HashMap中检索所有键和值作为Java集合或实用程序集(例如)。 我知道只要知道密钥就可以获取值,例如: 有没有办法检索键值作为列表? 问题答案: Java Hashmap键值示例:

  • 我想存储值并从Java HashMap中检索它们。 这是我目前所拥有的: 我想从HashMap中检索所有键和值,作为Java集合或实用程序集(例如,LinkedList)。 我知道如果我知道键,我可以得到值,如下所示: 有没有办法以列表的形式检索键值?

  • 在我的程序中,我有类似测试#6的错误:leastcommon({})exp。异常:第16行堆栈跟踪上的IllegalArgumentExceptionyour exceptionNoSuchElementException:NoSuchElementException LestCommon,第16行结果:fail } 如何用我的程序修正?

  • 关于下面的代码,我有两个问题, 1.我在哈希图中有两次键“二”,打印时,“二”只显示一次。为什么它没有显示“二”两次? 2.如何选择性地显示键“二”?

  • 问题内容: 我正在尝试在数据表中显示Hashmap,这是我要尝试的操作:我将具有一些产品的选择菜单,以及数量的输入文本,还有一个“ ajaxified”添加按钮,用于添加产品和它的数量到地图上,以及一个提交按钮,显示一个摘要对话框,其中包含一个包含两列的数据表:产品名称和数量。我的哈希图是 对于Ajaxified按钮和所有这些第一步,它们正在为我工​​作,我已设置了所有内容,并且正确填充了地图,剩

  • 以下代码导致此异常: 所以问题是:如何在GSON序列化和反序列化的泛型HashMap中获得正确的实例?