关于我对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的更多相关文章

  1. HashMap根据value获取key值

    public static String getCityId(HashMap<String,String> citys, String city){ Set set = citys.ent ...

  2. java map遍历、排序,根据value获取key

    Map 四种遍历: Map<String,String> map = new HashMap<String, String>(); map.put("one" ...

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

    获取map的值主要有四种方法,这四种方法又分为两类,一类是调用map.keySet()方法来获取key和value的值,另一类则是通过map.entrySet()方法来取值,两者的区别在于,前者主要是 ...

  4. php array 根据value获取key,in_array()判断是否在数组内实例

    php array 根据value获取key,in_array()判断是否在数组内实例 <?php header("Content-type: text/html; charset=u ...

  5. Java Map获取key和value 以及String字符串转List方法

    一.问题描述 这里描述两个问题: 1.Java Map获取key和value的方法: 2.String字符串转List的方法: 二.解决方法 1.Java Map获取key和value的方法   2. ...

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

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

  7. com.alibaba.fastjson和org.json遍历获取key

    推荐都是用fastjson.org.json好像不支持序列化. com.alibaba.fastjson遍历获取key的方法: //fastjson解析方法 for (Map.Entry<Str ...

  8. JedisCluster获取key所在的节点

    JedisCluster获取key所在的节点 2019年11月9日17:34:55 准备 引入jedis的jar包,这个jar包里面包含了JedisCluster,可以用它来操作集群. <dep ...

  9. hashmap 实现 相同的key值时,value值叠加效果。

    一,了解一些基础 package com.ohs.demo; /** * * 一.需求是:停止相同的key值,覆盖效果,将重复的value值,叠加起来. * * 二.hash? 什么是hash? * ...

随机推荐

  1. HDU 4919 Exclusive or (数论 or 打表找规律)

    Exclusive or 题目链接: http://acm.hust.edu.cn/vjudge/contest/121336#problem/J Description Given n, find ...

  2. Linux命令之env:显示当前用户的环境变量

    Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令.下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的 ...

  3. linux性能问题(CPU,内存,磁盘I/O,网络)

    一. CPU性能评估 1.vmstat [-V] [-n] [depay [count]] -V : 打印出版本信息,可选参数 -n : 在周期性循环输出时,头部信息仅显示一次 delay : 两次输 ...

  4. 8VC Venture Cup 2016 - Elimination Round (C. Block Towers)

    题目链接:http://codeforces.com/contest/626/problem/C 题意就是给你n个分别拿着2的倍数积木的小朋友和m个分别拿着3的倍数积木的小朋友,每个小朋友拿着积木的数 ...

  5. 终于吧Appserv搞通了

    .在学习php的时候遇到了这个问题; 1.Fatal error: Call to undefined function set_magic_quotes_runtime() in E:\App 打开 ...

  6. Http通讯协议在.net下的实现方法

    1.HttpwebRequest and  HttpWebResponse 2.客户端访问服务端的API:HttpClient 3. .net下的Remoting 4.Web Services 5.W ...

  7. javax.naming.NameNotFoundException

    2015-08-27 09:53:16,463 [localhost-startStop-1] DEBUG [org.springframework.jndi.JndiTemplate] - Look ...

  8. Java中的Annotation(2)----Annotation工作原理

    Java中的Annotation(2)----Annotation工作原理 分类: 编程语言2013-03-18 01:06 3280人阅读 评论(6) 收藏 举报 上一篇文章已经介绍了如何使用JDK ...

  9. hadoop namenode又一次格式化以后hbase的hmaster进程启动后立即消失

    hadoop的 namenode又一次格式化以后.重新启动hbase.发现它的hmaster进程启动后立即消失,查看一大堆日志,最后在zookeeper的日志里发现例如以下问题 Unable to r ...

  10. python选择排序

    def select_sort(list): for i in range(len(list)): position = i for j in range(i,len(list)): if list[ ...