Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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
Java 哈希映射。查找两个哈希映射之间具有相同值的键 让我们考虑下面的两个哈希图: HashMap<String, Integer> map1 = new HashMap<>(); map1.put("vishal", 10); map1.put("sachin", 30); map1.put("vaibhav", 20); HashMap<String, Integer> map2 = new HashMap<>(); map2.put("Raja", 10); map2.put("John", 30); map2.put("Krishna", 20); HashMap map1=newhashmap(); 地图1.put(“vishal”,第10页); map1.put(“sachin”,30); map1.put(“vaibhav”,20); HashMap map2=新的HashMap(); 地图2.put(“Raja”,第10页); map2.put(“约翰”,30岁); 地图2.put(“克里希纳”,20);_Java_Algorithm_Data Structures - Fatal编程技术网

Java 哈希映射。查找两个哈希映射之间具有相同值的键 让我们考虑下面的两个哈希图: HashMap<String, Integer> map1 = new HashMap<>(); map1.put("vishal", 10); map1.put("sachin", 30); map1.put("vaibhav", 20); HashMap<String, Integer> map2 = new HashMap<>(); map2.put("Raja", 10); map2.put("John", 30); map2.put("Krishna", 20); HashMap map1=newhashmap(); 地图1.put(“vishal”,第10页); map1.put(“sachin”,30); map1.put(“vaibhav”,20); HashMap map2=新的HashMap(); 地图2.put(“Raja”,第10页); map2.put(“约翰”,30岁); 地图2.put(“克里希纳”,20);

Java 哈希映射。查找两个哈希映射之间具有相同值的键 让我们考虑下面的两个哈希图: HashMap<String, Integer> map1 = new HashMap<>(); map1.put("vishal", 10); map1.put("sachin", 30); map1.put("vaibhav", 20); HashMap<String, Integer> map2 = new HashMap<>(); map2.put("Raja", 10); map2.put("John", 30); map2.put("Krishna", 20); HashMap map1=newhashmap(); 地图1.put(“vishal”,第10页); map1.put(“sachin”,30); map1.put(“vaibhav”,20); HashMap map2=新的HashMap(); 地图2.put(“Raja”,第10页); map2.put(“约翰”,30岁); 地图2.put(“克里希纳”,20);,java,algorithm,data-structures,Java,Algorithm,Data Structures,地图1中的“瓦伊巴夫”和地图2中的“奎师那”具有相同的值 我需要从两个具有相同值的贴图中找到键。在这种情况下,“维巴夫”和“克里希纳” 谢谢。这可以通过复杂度为n*m的两个for循环实现,其中n.m是每个贴图的大小 Map<String, String> map1 = new HashMap<>(); map1.put("santhosh", "1"); map1.put("raja", "2"); map1.put("arun", "3"); Map<Stri

地图1中的“瓦伊巴夫”和地图2中的“奎师那”具有相同的值

我需要从两个具有相同值的贴图中找到键。在这种情况下,“维巴夫”和“克里希纳”


谢谢。

这可以通过复杂度为n*m的两个for循环实现,其中n.m是每个贴图的大小

Map<String, String> map1 = new HashMap<>();
map1.put("santhosh", "1");
map1.put("raja", "2");
map1.put("arun", "3");


Map<String, String> map2 = new HashMap<>();
map2.put("kumar", "1");
map2.put("mani", "1");
map2.put("tony", "3");

for (Map.Entry<String, String> entry1 : map1.entrySet()) {
  String key1 = entry1.getKey();
  String value1 = entry1.getValue();

  for (Map.Entry<String, String> entry2 : map2.entrySet()) {
    String key2 = entry2.getKey();
    String value2 = entry2.getValue();

    if (value1 == value2) {
      System.out.println(key1 + " " + key2);
    }
    }
Map map1=newhashmap();
map1.put(“santhosh”,“1”);
地图1.put(“拉贾”,“2”);
地图1.put(“阿伦”,“3”);
Map map2=新的HashMap();
map2.put(“库马尔”,“1”);
map2.put(“马尼”,“1”);
地图2.put(“托尼”,“3”);
对于(Map.Entry entry1:map1.entrySet()){
字符串key1=entry1.getKey();
字符串value1=entry1.getValue();
对于(Map.Entry entry2:map2.entrySet()){
字符串key2=entry2.getKey();
字符串value2=entry2.getValue();
如果(值1==值2){
System.out.println(键1+“”+键2);
}
}

谢谢。

这可以通过复杂度为n*m的两个for循环实现,其中n.m是每个贴图的大小

Map<String, String> map1 = new HashMap<>();
map1.put("santhosh", "1");
map1.put("raja", "2");
map1.put("arun", "3");


Map<String, String> map2 = new HashMap<>();
map2.put("kumar", "1");
map2.put("mani", "1");
map2.put("tony", "3");

for (Map.Entry<String, String> entry1 : map1.entrySet()) {
  String key1 = entry1.getKey();
  String value1 = entry1.getValue();

  for (Map.Entry<String, String> entry2 : map2.entrySet()) {
    String key2 = entry2.getKey();
    String value2 = entry2.getValue();

    if (value1 == value2) {
      System.out.println(key1 + " " + key2);
    }
    }
Map map1=newhashmap();
map1.put(“santhosh”,“1”);
地图1.put(“拉贾”,“2”);
地图1.put(“阿伦”,“3”);
Map map2=新的HashMap();
map2.put(“库马尔”,“1”);
map2.put(“马尼”,“1”);
地图2.put(“托尼”,“3”);
对于(Map.Entry entry1:map1.entrySet()){
字符串key1=entry1.getKey();
字符串value1=entry1.getValue();
对于(Map.Entry entry2:map2.entrySet()){
字符串key2=entry2.getKey();
字符串value2=entry2.getValue();
如果(值1==值2){
System.out.println(键1+“”+键2);
}
}

谢谢。

按值分组并在列表中存储键:

Stream.of(map1.entrySet(),map2.entrySet())
.flatMap(集合::流)
.collect(收集器.groupingBy(
Map.Entry::getValue,
图(
Map.Entry::getKey,
收集者
)
));
它将创造:

{20=[vaibhav, Krishna], 10=[vishal, Raja], 30=[sachin, John]}
使现代化 其他方法

Map collect=newhashmap();
map1.entrySet().forEach(e->collect
.computeIfAbsent(e.getValue(),k->new ArrayList())
.add(e.getKey());
map2.entrySet().forEach(e->collect
.computeIfAbsent(e.getValue(),k->new ArrayList())
.add(e.getKey());

按值分组并在列表中存储键:

Stream.of(map1.entrySet(),map2.entrySet())
.flatMap(集合::流)
.collect(收集器.groupingBy(
Map.Entry::getValue,
图(
Map.Entry::getKey,
收集者
)
));
它将创造:

{20=[vaibhav, Krishna], 10=[vishal, Raja], 30=[sachin, John]}
使现代化 其他方法

Map collect=newhashmap();
map1.entrySet().forEach(e->collect
.computeIfAbsent(e.getValue(),k->new ArrayList())
.add(e.getKey());
map2.entrySet().forEach(e->collect
.computeIfAbsent(e.getValue(),k->new ArrayList())
.add(e.getKey());

您可以将时间复杂度提高到
O(n+m)
,其中
n
是第一个映射的大小,
m
是第二个映射的大小

  • 我们可以通过将
    作为键,将
    作为值来实现这一点
  • 步骤:
    • 迭代每个贴图
    • 将所有当前地图值存储在新地图中,并在列表中收集具有该值的所有键,然后将当前值与此列表一起放入新地图中
    • 现在,迭代任何新的地图集合,并获取公共键及其相应的打印值
片段:

private static void showCommonValueKeys(HashMap<String, Integer> map1,HashMap<String, Integer> map2){
    Map<Integer,List<String>> map1Collect = flipKeyValue(map1);
    Map<Integer,List<String>> map2Collect = flipKeyValue(map2);

    for(Map.Entry<Integer,List<String>> m : map1Collect.entrySet()){
        int key = m.getKey();
        if(map2Collect.containsKey(key)){
            System.out.println("For value " + key);
            System.out.println("First map keys: " + m.getValue().toString());
            System.out.println("Second map keys: " + map2Collect.get(key).toString());
            System.out.println();
        }
    }

}

private static  Map<Integer,List<String>> flipKeyValue(HashMap<String, Integer> map){
     Map<Integer,List<String>> mapCollect = new HashMap<>(); 

     for(Map.Entry<String,Integer> m : map.entrySet()){
        String  key = m.getKey();
        int val = m.getValue();
        mapCollect.putIfAbsent(val,new ArrayList<>());
        mapCollect.get(val).add(key);
     }

     return mapCollect;
}
private static void showCommonValueKeys(HashMap map1、HashMap map2){
Map map1集合=flipKeyValue(map1);
Map map2集合=flipKeyValue(map2);
对于(Map.Entry m:map1Collect.entrySet()){
int key=m.getKey();
if(地图2集合容器(键)){
System.out.println(“For value”+键);
System.out.println(“第一个映射键:+m.getValue().toString());
System.out.println(“第二个映射键:+map2Collect.get(key.toString());
System.out.println();
}
}
}
私有静态映射flipKeyValue(HashMap映射){
Map mapCollect=newhashmap();
对于(Map.Entry m:Map.entrySet()){
String key=m.getKey();
int val=m.getValue();
putIfAbsent(val,newarraylist());
mapCollect.get(val).add(key);
}
返回mapCollect;
}

演示:

您可以将时间复杂度提高到
O(n+m)
,其中
n
是第一个贴图的大小,
m
是第二个贴图的大小

  • 我们可以通过将
    作为键,将
    作为值来实现这一点
  • 步骤:
    • 迭代每个贴图
    • 将所有当前地图值存储在新地图中,并在列表中收集具有该值的所有键,然后将当前值与此列表一起放入新地图中
    • 现在,迭代任何新的地图集合,并获取公共键及其相应的打印值
片段:

private static void showCommonValueKeys(HashMap<String, Integer> map1,HashMap<String, Integer> map2){
    Map<Integer,List<String>> map1Collect = flipKeyValue(map1);
    Map<Integer,List<String>> map2Collect = flipKeyValue(map2);

    for(Map.Entry<Integer,List<String>> m : map1Collect.entrySet()){
        int key = m.getKey();
        if(map2Collect.containsKey(key)){
            System.out.println("For value " + key);
            System.out.println("First map keys: " + m.getValue().toString());
            System.out.println("Second map keys: " + map2Collect.get(key).toString());
            System.out.println();
        }
    }

}

private static  Map<Integer,List<String>> flipKeyValue(HashMap<String, Integer> map){
     Map<Integer,List<String>> mapCollect = new HashMap<>(); 

     for(Map.Entry<String,Integer> m : map.entrySet()){
        String  key = m.getKey();
        int val = m.getValue();
        mapCollect.putIfAbsent(val,new ArrayList<>());
        mapCollect.get(val).add(key);
     }

     return mapCollect;
}
private static void showCommonValueKeys(HashMap map1、HashMap map2){
Map map1集合=flipKeyValue(map1);
Map map2集合=flipKeyValue(map2);
对于(Map.Entry m:map1Collect.entrySet()){
int key=m.getKey();
if(地图2集合容器(键)){
System.out.println(“For value”+键);
System.out.println(“第一个映射键:+m.getValue().toString());
System.out.println(“第二个映射键:+map2Collect.get(key.toString());
System.out.println();
}
}
}
私有静态映射flipKeyValue(HashMap映射){
Map mapCollect=newhashmap();