2017-03-02 65 views
-3

如果密鑰匹配,如何打印兩個不同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

回答

1

使用流,並收集他們到一個新的地圖

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} 
1

試試這個:

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

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

0

我希望這個函數的工作

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()); 
      } 
     } 
    } 
} 
相關問題