这是我的程序,任何人都可以告诉我如何根据价值获得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);
}
}
答案 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();
方法)。