Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制一个HashMap<;K、 V>;到另一个HashMap<;五、 K>;在O(1)复杂度中(JAVA)_Java_Data Structures_Collections_Hashmap_Time Complexity - Fatal编程技术网

复制一个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想知道是否存在双向映射结构,这是我的猜测@丹尼尔,看看番石榴