Java HashMap根据value获取key

根据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]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值