如何根据值获取Map的键

时间:2015-01-09 14:11:59

标签: java

这是我的程序,任何人都可以告诉我如何根据价值获得Map的关键。

我试过

String vendor_name = map.get("value");

但是它让我无效

import java.util.Collections;
import java.util.HashMap;

public class Test {

    public static void main(String args[]) {

        HashMap<String, String> for_highest_price_vendor = new HashMap<String, String>();

        for_highest_price_vendor.put("vendor1", "20");
        for_highest_price_vendor.put("vendor2", "25");
        String maxValueInMap = (Collections.max(for_highest_price_vendor
                .values())); // This will return max value in the Hashmap

        String vendor_name = for_highest_price_vendor.get(maxValueInMap);

        System.out.println(vendor_name);

    }

}

2 个答案:

答案 0 :(得分:3)

没有反向映射。

您可以做的是迭代条目并将值与您想要的值进行比较,然后获得密钥,如果它等于。

当然,多个键可以具有相同的值!

例如:

Map<String, String> foo = new HashMap<String, String>();
foo.put("foo", "bar");
for (Map.Entry<String, String> entry: foo.entrySet()) {
    if (entry.getValue().equals("bar")) {
        System.out.println(entry.getKey());
        break; // or not, you may want to add to a Collection and return it once the loop is completed
    }
}

答案 1 :(得分:2)

您可以手动迭代,或使用Apache Common Collections Libraries之一。
Interface BidiMap <K,V>是一个双向地图,允许您将键映射到值,也可以将值映射到键(使用getKey();方法)。