Java find all the key with specific value
本问题已经有最佳答案,请猛点这里访问。
有没有办法找出地图中具有相同值的所有键。
喜欢
1 2 3 4 | map.put("A","Abc"); map.put("B","Abc"); map.put("C","Abc"); map.put("D","Bcd"); |
在这里,我想找出所有具有"Abc"值的关键字。
您也可以使用番石榴过滤器。
1 2 3 4 5 6 7 8 9 10 11 12 | Map<String, String> map = Maps.newHashMap(); map.put("A","abc"); map.put("B","abc"); map.put("C","a3c"); map.put("D","abc"); final String str ="a3c"; Map<String, String> filteredMap = Maps.filterEntries(map, new Predicate<Map.Entry<String, String>>() { @Override public boolean apply(final Map.Entry<String, String> stringStringEntry) { return stringStringEntry.getValue().equals(str); } }); |
这将返回所有以
仅供参考我只提供函数定义来显示它正在做什么,但是我建议使用预定义的Predicates,例如:
1 |
找到所有"x",这样"y"被称为
这是使用Java 8 Streams进行过滤的方法:
1 2 3 | Stream<String> keys = map.entrySet().stream() .filter(x ->"Abc".equals(x.getValue())) .map(Map.Entry::getKey); |
对于Java 7,您必须手动执行:
1 2 3 4 |
是的,有一种方法。 您可以从地图中获取键值对列表。 然后,只需过滤掉映射到您的特定值的键即可。
像这样例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); map.put("A","Abc"); map.put("B","Abc"); map.put("C","Abc"); map.put("D","Bcd"); Set<Entry<String, String>> set = map.entrySet();//<-- get key-value pairs for(Entry<String, String> entry : set){//<-- iterate over all entries if(entry.getValue().equals("Abc")){//<-- check for your value System.out.println(entry.getKey());//<-- print the key / or add it to a list if you want } } } |
我希望这有帮助 :)