如果密钥在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!");
}
}
答
使用流,并收集他们到一个新的地图
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());
}
}
}
}
你尝试过什么? –
解决方案很简单。如此简单,我不愿意在没有先看到自己尝试过的内容的情况下告诉你,并解释什么不起作用。 – domsson
你的“目前的尝试”似乎根本不是为了产生你所说的结果是你想要的结果。 – SantiBailors