首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

求教一个关于地图的有关问题

2012-12-16 
求教一个关于map的问题大家都知道在map中数据以键值对的形式存储的,通过key即可得到对应的value。问题来了,

求教一个关于map的问题
大家都知道在map中数据以键值对的形式存储的,通过key即可得到对应的value。
问题来了,能否通过value查找对应的key?或者有没有其他的数据类型或jdk中现成的方法能够实现的?
[最优解释]

 public Object getKey(java.util.Map map,Object value)
    {
    if(map==null)return null;
    java.util.Collection entrys=map.entrySet();
    java.util.Iterator iterator=entrys==null?null:entrys.iterator();
    while(iterator!=null&&iterator.hasNext())
    {
    java.util.Map.Entry entry=(Entry) iterator.next();
    if(entry.getValue()!=null&&entry.getValue().equals(value))
    {
    return entry.getKey();
    }
    }
    return null;
    }

[其他解释]
使用apache commons项目里面的工具包collections,有双向map。
[其他解释]
正反其实原理都是一样,看你怎么写罢了。

Map<String, String> map = new HashMap<String, String>(); 

map.put("a", "123");
map.put("b", "456");
map.put("c", "789");

String str = "123";
Iterator<String> it = map.keySet().iterator();
while(it.hasNext()){
String var = (String)it.next();
if(map.get(var).equals(str)){
System.out.println(var + "," + str);
}
}


[其他解释]
晕,返过来存就得了。
map.put(value,key)
[其他解释]
不好意思,我没说清楚
我知道反过来存也可以,但是这样就要存储在2个map中,我现在用的map中数据量比较大,这样很浪费内存
我就是想找个只需存储在一个map中就能实现的方法,当然也不一非得用map,如果有其他数据类型能够代替的都可以
[其他解释]
这个得看你的value是不是唯一的。因为map里的key是唯一的但value是可以重复的。如果value是重复的你怎么对应
[其他解释]
引用:
不好意思,我没说清楚
我知道反过来存也可以,但是这样就要存储在2个map中,我现在用的map中数据量比较大,这样很浪费内存
我就是想找个只需存储在一个map中就能实现的方法,当然也不一非得用map,如果有其他数据类型能够代替的都可以

一个还是两个map,对于数据量很大的时候来说,用的内存都一样,主要是决定于数据量。


[其他解释]
理解错了。。
[其他解释]
现成的结构好像真没有,要自己写的话,要写的好点还得用哈希结构,太麻烦了,
数据量不是太大的话,可以写个简单的
[其他解释]
两个list,或两个数组,存的时候对应着存,取的时候,根据index,对应取?

热点排行