如果密钥在HashMap中匹配,则打印值

问题描述:

如果密钥匹配,如何打印两个不同HashMap的值?如果密钥在HashMap中匹配,则打印值

HashMap<String, String> color = new HashMap<String, String>(); 
HashMap<String, String> fruits = new HashMap<String, String>(); 

color.put("11", "red"); 
color.put("14", "blue"); 
color.put("26", "green"); 
fruits.put("26", "banana"); 
fruits.put("11", "apple"); 
fruits.put("14", "melon"); 

而且我想结果看起来像这样:

"11 : red apple" 
"14 : blue melon" 
"26 : green banana" 

我现在尝试

for(int i=0; i<color.size(); i++){ 
      if(color.keySet().equals(fruits.keySet())){ 
       System.out.println("Its a match!"); 
      } 

     } 
+2

你尝试过什么? –

+1

解决方案很简单。如此简单,我不愿意在没有先看到自己尝试过的内容的情况下告诉你,并解释什么不起作用。 – domsson

+1

你的“目前的尝试”似乎根本不是为了产生你所说的结果是你想要的结果。 – SantiBailors

使用流,并收集他们到一个新的地图

Map<String, String> map = color.entrySet().stream() 
    .collect(Collectors.toMap(Map.Entry::getKey, 
     e -> color.get(e.getKey()) + " " + fruits.get(e.getKey()))); 
System.out.println(map); // {11=red apple, 14=blue melon, 26=green banana} 

试试这个:

public static void main(String[] args) { 

    HashMap<String, String> color = new HashMap<String, String>(); 
    HashMap<String, String> fruits = new HashMap<String, String>(); 

    color.put("11", "red"); 
    color.put("14", "blue"); 
    color.put("26", "green"); 
    fruits.put("26", "banana"); 
    fruits.put("11", "apple"); 
    fruits.put("14", "melon"); 
    fruits.put("15", "test"); 

    Set<String> colorKeys = color.keySet(); 
    Set<String> fruitsKeys = fruits.keySet(); 

    colorKeys.retainAll(fruitsKeys); //// colorKeys now contains only elements in both sets 

    for (String key : colorKeys) { 

     String sColor = color.get(key); 
     String sFruit = fruits.get(key); 

     System.out.println(String.format("%s : [%s %s]" , key, sColor, sFruit)); 

    } 
} 

输出:

11 : [red apple] 
14 : [blue melon] 
26 : [green banana] 
+1

是的。你可以打印密钥,但... –

我希望这个函数的工作

public void get(Map<String, String> map1, Map<String, String> map2){ 
    for(Map.Entry m:map1.entrySet()) 
    { 
     for(Map.Entry n:map2.entrySet()) 
     { 
      if(m.getKey()==n.getKey()) 
      { 
       System.out.println(m.getKey()+" : "+m.getValue()+" , "+n.getValue()); 
      } 
     } 
    } 
}