java 怎样通过hashmap的value得到key
4个回答
展开全部
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;
}
展开全部
楼上的说法不对啊,有时候就会遇到这样的情况!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";
}
}
下面是个测试,仅仅是个人方法,有错还望高手提出!
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";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有这个需求的话你可以放两个Map,一个是key-value对,另外一个是value-key对
现在的计算机对储存大小的限制可以无视,所以牺牲空间换取效率完全没问题
不然只能遍历,个人非常讨厌长代码。。
现在的计算机对储存大小的限制可以无视,所以牺牲空间换取效率完全没问题
不然只能遍历,个人非常讨厌长代码。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不行,只能查找HASHMAP里是否有VALUE这个值,既然你要通过VALUE找KEY为什么不把2个顺序调换一下?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询