关于HashMap根据Value获取Key
关于我对java中集合的总结有如下三篇:
关于JDK中的集合总结(一)
关于JDK中的集合总结(二)
关于JDK中的集合总结(三)
关于数组集合之间的转换
Map中是一个key有且只有一个value.
但是一个value可以对应多个key值.
一般都是通过key,然后map.get(key)获得到value.
如果想要反向想通过value获得key的值,提供一下两种方法:
方法一:
package cn.itcast.mapgetkey; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; public class HashMapDemo {
//根据value值获取到对应的一个key值
public static String getKey(HashMap<String,String> map,String value){
String key = null;
//Map,HashMap并没有实现Iteratable接口.不能用于增强for循环.
for(String getKey: map.keySet()){
if(map.get(getKey).equals(value)){
key = getKey;
}
}
return key;
//这个key肯定是最后一个满足该条件的key.
} //根据value值获取到对应的所有的key值
public static List<String> getKeyList(HashMap<String,String> map,String value){
List<String> keyList = new ArrayList();
for(String getKey: map.keySet()){
if(map.get(getKey).equals(value)){
keyList.add(getKey);
}
}
return keyList;
} public static void main(String[] args) {
HashMap<String,String> map = new HashMap();
map.put("CHINA", "中国");
map.put("CN", "中国");
map.put("AM", "美国");
//获取一个Key
System.out.println("通过value获取Key:"+getKey(map,"中国"));//输出"CN"
System.out.println("通过value获取Key:"+getKey(map,"美国"));//输出"AM"
//获得所有的key值
System.out.println("通过value获取所有的key值:"+getKeyList(map,"中国"));//输出"[CHINA, CN]" }
}
方法二:
package cn.itcast.mapgetkey2; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; public class MapValueGetKey {
HashMap<String, String> map = null; public MapValueGetKey(HashMap<String, String> map) {
this.map = map;
} public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
map.put("4", "c");
map.put("5", "e");
MapValueGetKey mapValueGetKey = new MapValueGetKey(map);
System.out.println(mapValueGetKey.getKey("c"));//输出[3, 4]
} private ArrayList<String> getKey(String value) {
ArrayList<String> keyList = new ArrayList<String>();
String key = null;
Set<Entry<String, String>> set = map.entrySet();// entrySet()方法就是把map中的每个键值对变成对应成Set集合中的一个对象.
// set对象中的内容如下:[3=c, 2=b, 1=a, 5=e, 4=c]
Iterator it = set.iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
// entry中的内容就是set集合中的每个对象(map集合中的一个键值对)3=c....
// Map.Entry就是一种类型,专值map中的一个键值对组成的对象.
if (entry.getValue().equals(value)){
key = (String) entry.getKey();
keyList.add(key);
}
}
return keyList;
}
}
关于HashMap根据Value获取Key的更多相关文章
- HashMap根据value获取key值
public static String getCityId(HashMap<String,String> citys, String city){ Set set = citys.ent ...
- java map遍历、排序,根据value获取key
Map 四种遍历: Map<String,String> map = new HashMap<String, String>(); map.put("one" ...
- Map四种获取key和value值的方法,以及对map中的元素排序(转)
获取map的值主要有四种方法,这四种方法又分为两类,一类是调用map.keySet()方法来获取key和value的值,另一类则是通过map.entrySet()方法来取值,两者的区别在于,前者主要是 ...
- php array 根据value获取key,in_array()判断是否在数组内实例
php array 根据value获取key,in_array()判断是否在数组内实例 <?php header("Content-type: text/html; charset=u ...
- Java Map获取key和value 以及String字符串转List方法
一.问题描述 这里描述两个问题: 1.Java Map获取key和value的方法: 2.String字符串转List的方法: 二.解决方法 1.Java Map获取key和value的方法 2. ...
- PHP JSON文件解析并获取key、value,判断key是否存在
/****************************************************************************** * PHP JSON文件解析并获取key ...
- com.alibaba.fastjson和org.json遍历获取key
推荐都是用fastjson.org.json好像不支持序列化. com.alibaba.fastjson遍历获取key的方法: //fastjson解析方法 for (Map.Entry<Str ...
- JedisCluster获取key所在的节点
JedisCluster获取key所在的节点 2019年11月9日17:34:55 准备 引入jedis的jar包,这个jar包里面包含了JedisCluster,可以用它来操作集群. <dep ...
- hashmap 实现 相同的key值时,value值叠加效果。
一,了解一些基础 package com.ohs.demo; /** * * 一.需求是:停止相同的key值,覆盖效果,将重复的value值,叠加起来. * * 二.hash? 什么是hash? * ...
随机推荐
- 【转】新建maven工程为什么jdk会是默认版本 而不是自己设置的版本?
原文链接:为什么我eclipse新建项目的时候默认的是JRE1.5? 修改Maven中conf目录里的setting.xml文件内容,加上如下内容: <profiles> <!-- ...
- JSF 2 radio buttons example
In JSF, "h:selectOneRadio" tag is used to render a set of HTML input element of type " ...
- My97DatePicker源码的K方法
<head></head> <script> var X = window,M = "document", C = "getEleme ...
- nyoj 120 校园网络(求添加多少条边使整个图强连通)
校园网络 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一 ...
- c# 如何使用DLL的config文件中的信息
我知道用c#编写的exe程序可以读取config文件中的配置信息,比如Test.exe,可以在与Test.exe相同目录下放置一个config文件:Test.exe.config,用System.Co ...
- 比较器comparable与comparator的使用
在Java学习和使用里,工具类与算法类(collections和Arrays)也是我们使用比较多的,在它们里面就包含了comparable与comparator这两种比较器. 一.比较器的分类与概念 ...
- android知乎小圆圈刷新效果
前几天看到包括知乎在内的很多应用都使用到了一种小圆圈划动刷新的效果,仔细查了一下,原来是android v7包里面最新的刷新效果.使用起来也是十分简单的. 首先先建立一个activity,在布局文件里 ...
- 深入Mysql 导入导出
mysql常用导出数据命令:1.mysql导出整个数据库 mysqldump -hhostname -uusername -ppassword databasename > backupfil ...
- SPOJ LIS2 Another Longest Increasing Subsequence Problem 三维偏序最长链 CDQ分治
Another Longest Increasing Subsequence Problem Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://a ...
- Codeforces Round #331 (Div. 2)C. Wilbur and Points 贪心
C. Wilbur and Points Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/596/ ...