Java 如何打印与特定值关联的所有键?

Java 如何打印与特定值关联的所有键?,java,map,hashmap,key-value,treemap,Java,Map,Hashmap,Key Value,Treemap,例如,我的树映射设置为 此循环获取与用户输入的特定键相关的所有信息。在我的例子中,如果我输入一个键(员工的名字),我会得到他的名字、部门和薪水 有什么方法可以让我做相反的事情吗? 那么,我可以键入部门(值)并获取与该部门相关联的所有员工(键)的姓名吗?对于当前的数据结构,您必须在地图上循环: ArrayList<String> relatedKeys = new ArrayList<String>(); for(String k : departmentList.keyS

例如,我的树映射设置为

此循环获取与用户输入的特定键相关的所有信息。在我的例子中,如果我输入一个键(员工的名字),我会得到他的名字、部门和薪水

有什么方法可以让我做相反的事情吗?
那么,我可以键入部门(值)并获取与该部门相关联的所有员工(键)的姓名吗?

对于当前的数据结构,您必须在地图上循环:

ArrayList<String> relatedKeys = new ArrayList<String>();
for(String k : departmentList.keySet()){
  if(departmentList.get(k).equals(searchKey))
    relatedKeys.add(k);

我添加了“java”标记,因为代码似乎与java编码风格匹配。。。请确认这是您感兴趣的语言。您正在寻找的答案已经在这里:这是使用数据库/ORM开始变得有趣的地方;关系数据库在这类“切换查询”问题上往往表现得更好,因为它们鼓励您思考您想知道的内容,而不是如何获得它。这确实是实现这一点的唯一方法。也许您还应该将整个for循环包装在一个if语句中:if(departmentList.containsValue(searchKey)){…}。我认为这应该通过在实际存在对应键时遍历键集来提高性能。从未想过这样做,但逻辑是有效的。我可以将它添加到字符串中,而不是将其添加到数组中。
ArrayList<String> relatedKeys = new ArrayList<String>();
for(String k : departmentList.keySet()){
  if(departmentList.get(k).equals(searchKey))
    relatedKeys.add(k);
for(String k : relatedKeys)
  System.out.println(k);