Map中是一个key有且只有一个value.

但是一个value可以对应多个key值.

一般都是通过key,然后map.get(key)获得到value.

如果想要反向想通过value获得key的值,提供一下两种方法:

方法一:

 1 package cn.itcast.mapgetkey;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6
 7 public class HashMapDemo {
 8     //根据value值获取到对应的一个key值
 9     public static String getKey(HashMap<String,String> map,String value){
10         String key = null;
11         //Map,HashMap并没有实现Iteratable接口.不能用于增强for循环.
12         for(String getKey: map.keySet()){
13             if(map.get(getKey).equals(value)){
14                 key = getKey;
15             }
16         }
17         return key;
18         //这个key肯定是最后一个满足该条件的key.
19     }
20
21     //根据value值获取到对应的所有的key值
22     public static List<String> getKeyList(HashMap<String,String> map,String value){
23         List<String> keyList = new ArrayList();
24         for(String getKey: map.keySet()){
25             if(map.get(getKey).equals(value)){
26                 keyList.add(getKey);
27             }
28         }
29         return keyList;
30     }
31
32     public static void main(String[] args) {
33         HashMap<String,String> map = new HashMap();
34         map.put("CHINA", "中国");
35         map.put("CN", "中国");
36         map.put("AM", "美国");
37         //获取一个Key
38         System.out.println("通过value获取Key:"+getKey(map,"中国"));//输出"CN"
39         System.out.println("通过value获取Key:"+getKey(map,"美国"));//输出"AM"
40         //获得所有的key值
41         System.out.println("通过value获取所有的key值:"+getKeyList(map,"中国"));//输出"[CHINA, CN]"
42
43     }
44 }

方法二:

 1 package cn.itcast.mapgetkey2;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.Iterator;
 6 import java.util.Map;
 7 import java.util.Map.Entry;
 8 import java.util.Set;
 9
10 public class MapValueGetKey {
11     HashMap<String, String> map = null;
12
13     public MapValueGetKey(HashMap<String, String> map) {
14         this.map = map;
15     }
16
17     public static void main(String[] args) {
18         HashMap<String, String> map = new HashMap<String, String>();
19         map.put("1", "a");
20         map.put("2", "b");
21         map.put("3", "c");
22         map.put("4", "c");
23         map.put("5", "e");
24         MapValueGetKey mapValueGetKey = new MapValueGetKey(map);
25         System.out.println(mapValueGetKey.getKey("c"));//输出[3, 4]
26     }
27
28     private ArrayList<String> getKey(String value) {
29         ArrayList<String> keyList = new ArrayList<String>();
30         String key = null;
31         Set<Entry<String, String>> set = map.entrySet();// entrySet()方法就是把map中的每个键值对变成对应成Set集合中的一个对象.
32         // set对象中的内容如下:[3=c, 2=b, 1=a, 5=e, 4=c]
33         Iterator it = set.iterator();
34         while (it.hasNext()) {
35             Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
36             // entry中的内容就是set集合中的每个对象(map集合中的一个键值对)3=c....
37             // Map.Entry就是一种类型,专值map中的一个键值对组成的对象.
38             if (entry.getValue().equals(value)){
39                 key = (String) entry.getKey();
40                 keyList.add(key);
41             }
42         }
43         return keyList;
44     }
45 }

本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4673183.html,如需转载请自行联系原作者

关于HashMap根据Value获取Key相关推荐

  1. Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 获取map的值主要有四种方法,分为两类: 调用 map.keySet() 方法来获取 key ...

  2. Map四种获取key和value值的方法,以及对map中的元素排序

    2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另 ...

  3. c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析

    分享老师:学而思网校 郭雨田 一.map的结构与设计原理 golang中map是一个kv对集合.底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起 ...

  4. Java遍历Map集合,获取key、value等方式

    首先构建一个Map集合: Map<String, Integer> buy=new HashMap<>();buy.put("苹果手机", 2);//添加键 ...

  5. Map循环获取key+value

    private Map<Bitmap, Bitmap> bitMap = new HashMap<Bitmap, Bitmap>(); 第一种:可单独获取key和value i ...

  6. aes key长度_原创 | 浅谈Shiro反序列化获取Key的几种方式

    点击"关注"了解更多信息 关于Apache Shiro反序列化 在shiro≤1.2.4版本,默认使⽤了CookieRememberMeManager,由于AES使用的key泄露, ...

  7. python字典通过键值获取键名,通过value获取key

    python通过字典的value获取key,最好的方法是反转键值,然后通过key在获得value 比如: 也可以通过list把键变成列表,然后,在list中获取字典相应的值对应的键,比如 但是这样很麻 ...

  8. freemaker .flt文件自动换行的问题,map循环获取key和value

    1.如果直接代码中声明换行的字符串,在freemaker中是不能直接换行的,需要在赋值的时候加上替换语句,如下 ${(list2.resultBody?replace('\r\n','<w:br ...

  9. PHP JSON文件解析并获取key、value,判断key是否存在

    /******************************************************************************* PHP JSON文件解析并获取key. ...

最新文章

  1. 【Rollo的Python之路】Python 同步条件 学习笔记 Event
  2. hdu 4568 Hunter bfs建图+TSP状压DP
  3. springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
  4. cross--向量或矩阵的叉乘
  5. QML ListView几个常用且非常重要的属性
  6. wxWidgets:wxFontMapper类用法
  7. linux下的各种shell介绍(bash和dash转换)
  8. leetcode面试题 16.26. 计算器(栈)
  9. 宝宝树发行价为6.8港元 11月27日在港交所正式挂牌
  10. cacti的安装和配置
  11. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)
  12. IOS 拉伸图片(封装)
  13. linux中安装程序的命令是,Linux安装软件命令是什么
  14. nand flash、nor flash、sdram、ram、dram的区别
  15. 神经网络每次输出不一样,神经网络输出值相同
  16. 【腾讯TMQ】基于模型的自动化测试工具——GraphWalker
  17. 西游记中孙悟空的蜕变
  18. 湖南卫视全部节目主持人名单
  19. gre vim linux,OVS搭建GRE隧道和VXLAN
  20. 安装SSL证书对网站收录有影响吗

热门文章

  1. python语言入门m-Python2 教程
  2. Linux中gcc的编译、静态库和动态库的制作
  3. Linux中常见命令和单词的缩写全称
  4. LeetCode Longest Increasing Subsequence(动态规划、二分法)
  5. 性能调优之工具---perf
  6. 原理分析之三:初始化(配置文件读取和解析)
  7. 大型网站的灵魂——性能
  8. B-Tree 和 B+Tree
  9. phpstudy升级5.7
  10. Android webservice的用法详细讲解