HashMap通过value反查key
这是今天做了一道字符串的问题,一直MLE,所以想到了减少Map里对应关系数量来降低内存开销。随手谷歌,整理出了如下资料。
如果效率优先的话还是写俩Map吧。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapValueGetKey {public static void main(String[] args) {Map map = new HashMap<>();
map.put(1,"A");
map.put(2,"A");
map.put(3,"A");
map.put(4,"A");
map.put(5,"A");
String value = "A";
ArrayList arr = valueGetKey(map, value);if(!arr.isEmpty()) {
for(int i=0; i<arr.size(); i++) {System.out.println(arr.get(i));}}}private static ArrayList valueGetKey(Map map,String value) {Set set = map.entrySet();ArrayList arr = new ArrayList<>();
Iterator it = set.iterator();while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();if(entry.getValue().equals(value)) {
int s = (int)entry.getKey();arr.add(s);}}return arr;
}}结果如下:
12345
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.