java 怎样通过hashmap的value得到key

 我来答
小傻

推荐于2018-02-28 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

java中可以使用hashmap的entry来查找key值,示例如下:

private static ArrayList valueGetKey(Map map,String value) {
    Set set = map.entrySet();//新建一个不可重复的集合
    ArrayList arr = new ArrayList<>();//新建一个集合
    Iterator it = set.iterator();//遍历的类
    while(it.hasNext()) {
      Map.Entry entry = (Map.Entry)it.next();//找到所有key-value对集合
      if(entry.getValue().equals(value)) {//通过判断是否有该value值
        int s = (int)entry.getKey();//取得key值
        arr.add(s);
      }
    }
    return arr;
  }
ala400
2010-08-10 · TA获得超过1229个赞
知道小有建树答主
回答量:262
采纳率:100%
帮助的人:274万
展开全部
楼上的说法不对啊,有时候就会遇到这样的情况!HashMap没有提供这样的功能,但是个人认为可以通过遍历 HashMap 来判断 value 从而得到Key
下面是个测试,仅仅是个人方法,有错还望高手提出!
import java.util.HashMap;
import java.util.Map;
public class Test
{
//通过value拿到key
public Object getKey(Map map,Object value)
{
for(Object key:map.keySet())
if(map.get(key).equals(value))
return key;
return null;
}
public static void main(String[] args)
{
Map<Object,Object> map=new HashMap<Object,Object>();
Test t=new Test();
A a=new A();
B b=new B();

map.put("1","a");
map.put("二",a);
map.put(3,b);
map.put(new B(),4);

System.out.println(t.getKey(map,"a"));
System.out.println(t.getKey(map,a));
System.out.println(t.getKey(map,b));
System.out.println(t.getKey(map,4));
}
}
class A
{
}
class B
{
public String toString(){
return "this is B";
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shiva1981
2010-08-10 · TA获得超过773个赞
知道小有建树答主
回答量:638
采纳率:0%
帮助的人:752万
展开全部
有这个需求的话你可以放两个Map,一个是key-value对,另外一个是value-key对
现在的计算机对储存大小的限制可以无视,所以牺牲空间换取效率完全没问题
不然只能遍历,个人非常讨厌长代码。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laowai250
2010-08-10 · TA获得超过1189个赞
知道小有建树答主
回答量:686
采纳率:0%
帮助的人:622万
展开全部
不行,只能查找HASHMAP里是否有VALUE这个值,既然你要通过VALUE找KEY为什么不把2个顺序调换一下?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式