关于HashMap根据Value获取Key
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相关推荐
- Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 获取map的值主要有四种方法,分为两类: 调用 map.keySet() 方法来获取 key ...
- Map四种获取key和value值的方法,以及对map中的元素排序
2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另 ...
- c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析
分享老师:学而思网校 郭雨田 一.map的结构与设计原理 golang中map是一个kv对集合.底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起 ...
- Java遍历Map集合,获取key、value等方式
首先构建一个Map集合: Map<String, Integer> buy=new HashMap<>();buy.put("苹果手机", 2);//添加键 ...
- Map循环获取key+value
private Map<Bitmap, Bitmap> bitMap = new HashMap<Bitmap, Bitmap>(); 第一种:可单独获取key和value i ...
- aes key长度_原创 | 浅谈Shiro反序列化获取Key的几种方式
点击"关注"了解更多信息 关于Apache Shiro反序列化 在shiro≤1.2.4版本,默认使⽤了CookieRememberMeManager,由于AES使用的key泄露, ...
- python字典通过键值获取键名,通过value获取key
python通过字典的value获取key,最好的方法是反转键值,然后通过key在获得value 比如: 也可以通过list把键变成列表,然后,在list中获取字典相应的值对应的键,比如 但是这样很麻 ...
- freemaker .flt文件自动换行的问题,map循环获取key和value
1.如果直接代码中声明换行的字符串,在freemaker中是不能直接换行的,需要在赋值的时候加上替换语句,如下 ${(list2.resultBody?replace('\r\n','<w:br ...
- PHP JSON文件解析并获取key、value,判断key是否存在
/******************************************************************************* PHP JSON文件解析并获取key. ...
最新文章
- 【Rollo的Python之路】Python 同步条件 学习笔记 Event
- hdu 4568 Hunter bfs建图+TSP状压DP
- springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
- cross--向量或矩阵的叉乘
- QML ListView几个常用且非常重要的属性
- wxWidgets:wxFontMapper类用法
- linux下的各种shell介绍(bash和dash转换)
- leetcode面试题 16.26. 计算器(栈)
- 宝宝树发行价为6.8港元 11月27日在港交所正式挂牌
- cacti的安装和配置
- windows通信端口初始化失败_STM32实例——USART串口通信实验(二)
- IOS 拉伸图片(封装)
- linux中安装程序的命令是,Linux安装软件命令是什么
- nand flash、nor flash、sdram、ram、dram的区别
- 神经网络每次输出不一样,神经网络输出值相同
- 【腾讯TMQ】基于模型的自动化测试工具——GraphWalker
- 西游记中孙悟空的蜕变
- 湖南卫视全部节目主持人名单
- gre vim linux,OVS搭建GRE隧道和VXLAN
- 安装SSL证书对网站收录有影响吗