复制一个HashMap<;K、 V>;到另一个HashMap<;五、 K>;在O(1)复杂度中(JAVA)
假设我有一个复制一个HashMap<;K、 V>;到另一个HashMap<;五、 K>;在O(1)复杂度中(JAVA),java,data-structures,collections,hashmap,time-complexity,Java,Data Structures,Collections,Hashmap,Time Complexity,假设我有一个HashMap,其中包含元素{one=1,two=2,three=3,three=4},我想创建另一个HashMap,其元素将是{1=1,2=2,3=3,4=4} 一种方法是 HashMap<String,String> map1 = new HashMap<String,String>(); map1.put("one",1); map1.put("two",2); map1.put("three"
HashMap
,其中包含元素{one=1,two=2,three=3,three=4}
,我想创建另一个HashMap
,其元素将是{1=1,2=2,3=3,4=4}
一种方法是
HashMap<String,String> map1 = new HashMap<String,String>();
map1.put("one",1);
map1.put("two",2);
map1.put("three",3);
map1.put("four",4);
HashMap<String,String> map2 = new HashMap<String,String>();
for(String s : map.keySet())
{
map2.put(map.get(s),s);
}
HashMap map1=newhashmap();
地图1.放置(“一”,1);
地图1.放置(“两”,2);
地图1.put(“三”,3);
地图1.放置(“四”,4);
HashMap map2=新的HashMap();
对于(字符串s:map.keySet())
{
map2.put(map.get(s),s);
}
但它具有时间复杂性O(N)
我想知道在O(1)中是否有任何方法可以做到这一点,您似乎在寻找一个双向映射。Java的核心库中没有这样的数据结构 但是有,这似乎是你想要的:
BiMap<String, String> biMap = HashBiMap.create();
biMap.put("key1", "value1");
biMap.put("key2", "value2");
BiMap<String, String> inverse = biMap.inverse();
String key1 = inverse.get("value1"); // key1
BiMap BiMap=HashBiMap.create();
biMap.put(“键1”、“值1”);
biMap.put(“键2”、“值2”);
BiMap inverse=BiMap.inverse();
字符串key1=inverse.get(“value1”);//关键1
这里的
BiMap.inverse()
方法返回原始映射的视图。这是一个O(1)
时间复杂度运算。在什么宇宙中复制N个值可能只有O(1)?根据你所做的事情的本质,它不能小于O(N)。@Andreas也许OP想知道是否存在双向映射结构,这是我的猜测@丹尼尔,看看番石榴