HashMap根据value获取key
2017-12-18 18:16
351 查看
根据Map的定义,我们可以知道Map是一组键值对,且key是唯一的,对应的value有且只有一个,但是相同的value可能对应不同的key。如果我们想通过key获取value,可以map.get(key)获得value。而如果需要通过value获取对应的key,则需要自己实现对应的方法。
下面,提供两种方法实现此需求。
方法1:
方法2,通过引入entrySet和Iterator:
测试代码如下:
结果输出:
方法1输出为:输出的key为:[1, 3]
方法2输出为:输出的key为:[1, 3]
下面,提供两种方法实现此需求。
方法1:
public static Object getKey(Map map, Object value){ List<Object> keyList = new ArrayList<>(); for(Object key: map.keySet()){ if(map.get(key).equals(value)){ keyList.add(key); } } return keyList; }
方法2,通过引入entrySet和Iterator:
public static Object getKey(Map map, Object value){ Set set = map.entrySet(); //通过entrySet()方法把map中的每个键值对变成对应成Set集合中的一个对象 Iterator<Map.Entry<Object, Object>> iterator = set.iterator(); ArrayList<Object> arrayList = new ArrayList(); while(iterator.hasNext()){ //Map.Entry是一种类型,指向map中的一个键值对组成的对象 Map.Entry<Object, Object> entry = iterator.next(); if(entry.getValue().equals(value)){ arrayList.add(entry.getKey()); } } return arrayList; }
测试代码如下:
public static void main(String[] args){ Map<String, String> map = new HashMap<>(); map.put("1", "a"); map.put("2", "b"); map.put("3", "a"); map.put("4", "c"); System.out.println("输出的key为:" + getKey(map, "a")); }
结果输出:
方法1输出为:输出的key为:[1, 3]
方法2输出为:输出的key为:[1, 3]
相关文章推荐
- Java 关于HashMap根据value反向获取key值
- 关于HashMap根据Value获取Key
- 关于HashMap根据Value获取Key
- (转)关于HashMap根据Value获取Key
- HashMap根据value获取key
- 关于HashMap根据Value获取Key
- HashMap 根据Value获取Key
- Extjs store根据key获取对应的value
- php array 根据value获取key,in_array()判断是否在数组内实例
- 使用FastJson从json串中根据key获取value
- 分别根据key和value对HashMap进行排序
- java获取配置文件及根据key获取配置文件中的value的工具类
- 根据索引获取Dictionary的key和value值
- WinForm中ComboBox添加Key/Value项、获取选中项、根据Key、Value设置选中项总结
- hashMap分别获取所有key和value
- Java对HashMap中的Entry实体根据Key或者Value进行排序
- 根据值(value)获取泛型Dictionary的键(key)
- HashMap中根据Value值,来获取对应的key值
- 根据值(value)获取泛型Dictionary的键(key)
- Map排序,获取map的第一值,根据value取key等操作(数据预处理)