您的位置:首页 > 产品设计 > UI/UE

HashMap根据value获取key

2017-12-18 18:16 351 查看
根据Map的定义,我们可以知道Map是一组键值对,且key是唯一的,对应的value有且只有一个,但是相同的value可能对应不同的key。如果我们想通过key获取value,可以map.get(key)获得value。而如果需要通过value获取对应的key,则需要自己实现对应的方法。

下面,提供两种方法实现此需求。

方法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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hashmap 对象