关于HashMap根据Value获取Key
2015-07-24 13:03
645 查看
关于我对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; } }
相关文章推荐
- 修正EasyUI的BUG——Form中存在FileBox时的数据加载错误
- PS快捷键大全
- javaGUI解决闪屏问题
- UICollectionView的简单使用
- IOS开发UI基础--数据刷新
- java GUI游戏界面问题 play,exit操作
- iOS8开发~UI布局(二)storyboard中autolayout和size class的使用详解 f
- POJ 2457--Part Acquisition 【spfa最短路 + STL路径输出】
- 如果你在iphone6plus下看到[UIScreen mainScreen].scale不是3.0
- Maven的Build过程
- [Java Web]EasyUI中Calendar预设时间的解决
- UITableView的简单使用
- IOS UILocalNotification 本地通知
- iOS 编程 利用UIScrollView 编写无缝循环显示图片
- 安卓使用merge标签和include优化UI布局
- uep开发——财务管理系统的总结
- 如何扩展EasyUI在页面中立即显示选中的本地图片
- Implement Queue using Stacks
- gulp插件(gulp-jmbuild),用于WEB前端构建
- Android高仿QQ v4.7.0全新UI