问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java Map 根据Map的值(value)取键(key)52

发布网友 发布时间:2024-03-04 05:42

我来回答

5个回答

热心网友 时间:2024-04-06 00:57

java根据Map的值(value)取键(key) 的实现方法有4种,分别为:

(1)使用for循环遍历

(2)使用Iterator迭代器

(3)使用KeySet迭代

(4)使用EnterySet迭代

下面为以上4种方法具体实现的代码:

1、使用for循环遍历

public static Object getKey(HashMap<Object,Object> map, String v) {

String key = "";

for (Map.Entry<String, Object> m :map.entrySet())  {

if (m.getValue().equals(v)) {

key = m.getKey();

}}

return key;

}

2、使用Iterator迭代器

public static Object getKey(HashMap<Object,Object> map, String v) {

Set set = map.entrySet();

Iterator iterator=set.iterator();

String key = "";

while (iterator.hasNext()) {

Map.Entry<String, Object> enter = (Entry<String, Object>)

iterator.next();

if (enter.getValue().equals(v)) {

key = enter.getKey();

}}

return key;

}

3、使用KeySet迭代

public static Object getKey(HashMap<Object,Object> map, String v) {

Iterator<Object> it = map.keySet().iterator();

while (it.hasNext()) {

String key = it.next().toString();

if ((String) map.get(key).equals(v)) return key;

}

return null;

}

4、使用EnterySet迭代

public static Object getKey(HashMap<Object,Object> map, String v) {

String key = "";

Iterator it = map.entrySet().iterator();

while (it.hasNext()) {

Map.Entry entry = (Entry) it.next();

Object obj = entry.getValue();

if (obj != null && obj.equals(value)) {

key = (String) entry.getKey();

}}

return key;

}

扩展资料:

java获取map的key和value的方法:

(1) 通过map.keySet()方法,先获取map的key,然后根据key获取对应的value。

for(String key : map.keySet()){

String value = map.get(key);

System.out.println(key+"  "+value);

}

Iterator<String> iter = map.keySet().iterator();

while(iter.hasNext()){

String key=iter.next();

String value = map.get(key);

System.out.println(key+" "+value);

}

(2)通过map.entrySet()方法,循环map里面的每一对键值对,然后获取key和value。

for(Entry<String, String> vo : map.entrySet()) {

vo.getKey();

vo.getValue();

System.out.println(vo.getKey()+"  "+vo.getValue());

}

Iterator<Entry<String,String>> iter = map.entrySet().iterator();

while(iter.hasNext()){

Entry<String,String> entry = iter.next();

String key = entry.getKey();

String value = entry.getValue();

System.out.println(key+" "+value);

}

参考资料来源:JAVA官方文档-Map

热心网友 时间:2024-04-06 00:50

用 map.entrySet(),得到Set<Entry<String,
Object>>,遍历得到entry。entry.getKey是键,entry.getValue是值。如果某一个entry.getValue和你的值相等,你return entry.getKey就是你要的键。

热心网友 时间:2024-04-06 00:52

public static void main(String[] args) {
Map<String, Object> map = new LinkedHashMap<String, 
Object>();
map.put("username","zhaokuo");
map.put("password", "123456");
map.put("email", "zhaokuo719@163.com");
map.put("sex", "男");
//第一种 用for循环的方式
for (Map.Entry<String, Object> m :map.entrySet())  {
System.out.println(m.getKey()+"\t"+m.getValue());
}
//利用迭代 (Iterator)
Set set=map.entrySet();
Iterator iterator=set.iterator();
while(iterator.hasNext()){
Map.Entry<String, Object> enter=(Entry<String, Object>) 
iterator.next();
System.out.println(enter.getKey()+"\t"+enter.getValue());
}
//利用KeySet 迭代
Iterator it = map.keySet().iterator();
while(it.hasNext()){
String key;   
  String value;   
  key=it.next().toString();   
  value=(String) map.get(key);   
  System.out.println(key+"--"+value);   
}
//利用EnterySet迭代
Iterator i=map.entrySet().iterator();      
System.out.println( map.entrySet().size());   
String key;      
String value;   
while(i.hasNext()){   
    Map.Entry entry = (Map.Entry)i.next();      
    key=entry.getKey().toString();      
    value=entry.getValue().toString();      
    System.out.println(key+"===="+value);           
}  
System.out.println(getKeyByValue(map, "zhaokuo"));
}
public static String getKeyByValue(Map map, Object value) {
String keys="";
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Entry) it.next();
Object obj = entry.getValue();
if (obj != null && obj.equals(value)) {
keys=(String) entry.getKey();
}

}
return keys;
}

热心网友 时间:2024-04-06 00:49

java map可以直接去key 但是好像不能根据value 取相应的key,
如果value唯一可以设计一个函数取key值

热心网友 时间:2024-04-06 00:52

假设value的变量为value:
for(Map.Entry entry:map.entrySet()){
if(value.equals(entry.getValue())return entry.getKey();

}
return null;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 Java put语句6 java中put(x,y)是哪个类的方法啊?25 猎人同人-幻莲电子书txt全集下载2 猎人---凤,容不得你不要 猎人风流电子书txt全集下载 求猎人---凤,容不得你不要 全文完结 1289402164... 不知道还有没有《猎人---凤,容不得你不要》全文(含V部分+... 猎人 凤,容不得你不要全文+番外dx_sx126@126.c... 猎人 凤,容不得你不要全文+番外1 binarysearch函数查找对象数组 java3 关于java的binarySearch()方法59 请问一下借条名字写错起诉有用吗 ...手印是我本人的,请问以上情况对方如果起诉有效吗? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 含氢硅油可以直接做防水用吗?还是要添加点什么? 汽车腻子膏用什么溶剂稀释? 含氢硅油可用无水乙醇作溶剂吗?2 WOW的人物怎么修改种族 硅油作为脱模剂,用什么稀释,比例怎兑 硅油用什么方法完全溶于水7 我是1987年6月15出生的,润第二个6月,请问我的生日新历是多少呢?谢谢... 我是1987年闰6月(第2个6月)15号出生。求高人帮算下命。 我是阴历1987年6月15日生的,请问我是什么星座? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 山姆会员可以借人吗? 挠曲的英语翻译 挠曲用英语怎么说 History is yours to bend 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 进制之间怎样换算? 目光如豆的动物是什么 求免费真正可以用的网络电话 在&lt;&lt;西游记&gt;&gt;里第59回(孙悟空三调芭蕉扇),为什么铁扇公主不肯把芭蕉扇... 宽带账号密码分不分大写 ...正常吗?而且她还知道我男朋友喜欢画画,送了画画的书,我该如何看待... 玉米属于直根系植物还是须根系植物?直根系的植物是网状脉还是平行脉... 反穿背心寓意什么 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 国有企业清算组成员组成 牧童骑黄牛,歌声振林樾……是谁写的?叫什么? 背心上图案是什么意思