首页 > Java > java教程 > 如何从给定值的 HashMap 中检索键?

如何从给定值的 HashMap 中检索键?

Susan Sarandon
发布: 2024-12-18 08:46:10
原创
728 人浏览过

How to Retrieve Keys from a HashMap Given Its Values?

根据值从 HashMap 中检索键

给定一个 HashMap,其中存储了键的值,让我们探索如何检索与具体值。

值倍数键:

如果一个键值对可以映射到多个值,您需要迭代条目并过滤具有所需值的条目:

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    Set<T> keys = new HashSet<>();
    for (Entry<T, E> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            keys.add(entry.getKey());
        }
    }
    return keys;
}
登录后复制

值到单键:

如果键和值之间存在一对一的映射,您可以直接返回第一个匹配的键:

public static <T, E> T getKeyByValue(Map<T, E> map, E value) {
    for (Entry<T, E> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            return entry.getKey();
        }
    }
    return null;
}
登录后复制

使用 Java 8 Streams:

使用 Java 8 Streams,您可以更有效地过滤和映射条目:

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    return map.entrySet()
              .stream()
              .filter(entry -> Objects.equals(entry.getValue(), value))
              .map(Map.Entry::getKey)
              .collect(Collectors.toSet());
}
登录后复制

番石榴BiMap:

如果您使用 Guava,BiMap 集合提供了一种更方便的方法来处理逆映射:

BiMap<Token, Character> tokenToChar =
    ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '(');
Token token = tokenToChar.inverse().get('(');
Character c = tokenToChar.get(token);
登录后复制

以上是如何从给定值的 HashMap 中检索键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板