2017-11-11 52 views
-3

我会解释的情况下,我有两个哈希地图让我们如何比较基于键2个包含HashMap,如果值不匹配,我需要打印的不匹配项和值

Map<String,String> map_A = new HashMap<>(); 

mapA.put("Name", "Jerry"); 
mapA.put("State", "Texas"); 

Map<String,String> map_B = new HashMap<>(); 

mapB.put("Name","TOM"); 
mapB.put("State", "Texas"); 

我的钥匙将是相同的在所有情况下。

预期输出:

名称杰里汤姆不匹配

我只需要打印的情况下,如果有一个不匹配。

+0

你有问题吗?如果您尝试过这样并且无法正常工作,请发布您尝试的内容。如果您还没有尝试过,请先尝试。 – ajb

+1

由于缺乏尝试/以前的研究而陷入低估。这是非常基本的东西,而且这些东西有很多例子。除此之外:阅读有关原始类型 - 然后停止使用它们。您应该在地图声明的左侧放置类型信息! – GhostCat

+0

有什么问题?获取关键值的值如果不相等则比较值然后打印键。 – Lokesh

回答

-1

根据不同的按键会相同,显示不同的值的关键,你可以尝试这样的

public class test { 
    public static void main(String args[]){ 
     HashMap<String, String> map1 = new HashMap<>(); 
     HashMap<String,String> map2 = new HashMap<>(); 
     map1.put("Name", "Jerry"); 
     map1.put("State", "Texas"); 
     map2.put("Name","TOM"); 
     map2.put("State", "Texas"); 
     Iterator<?> it = map1.entrySet().iterator(); 
     Iterator<?> it1 = map2.entrySet().iterator(); 
     while (it.hasNext() && it1.hasNext()) { 
      Map.Entry pair = (Map.Entry)it.next(); 
      Map.Entry pair1 = (Map.Entry)it1.next(); 
      if(!pair.getValue().equals(pair1.getValue())) { 
       System.out.println(pair.getKey()+" "+pair.getValue()+" "+pair1.getValue()+" mismatched"); 
      } 
     } 
    } 
} 

输出一些东西

Name Jerry TOM mismatched 
+0

已接受downvotes,但有正当理由 – Lokesh

+0

@PrishiKumar是根据相同的标准比较?顺便说一句,这段代码工作的非常好,我已经在我的电脑上测试过它 – Lokesh

+0

它显示出几个字段不匹配,即使它匹配。 。 –

0

你可以试试这个:

public static void main(String[] args) { 
    Map<String,String> mapA = new HashMap<>(); 
    mapA.put("Name", "Jerry"); 
    mapA.put("State", "Texas"); 
    Map<String,String> mapB = new HashMap<>(); 
    mapB.put("Name","TOM"); 
    mapB.put("State", "Texas"); 
    Set<String> bKeys = mapB.keySet(); 
    mapA.keySet().stream() 
      .filter(bKeys::contains) 
      .distinct() 
      .map(key -> { 
       String valA = mapA.get(key); 
       String valB = mapB.get(key); 
       if (Objects.equals(valA, valB)) { 
        return null; 
       } 
       return key + " " + valA + " vs " + valB + " mismatched"; 
      }) 
      .filter(Objects::nonNull) 
      .forEach(System.out::println); 
} 
+0

@PrishiKumar阅读关于流https://www.tutorialspoint.com/java8/java8_streams.htm –

+0

谢谢叶戈尔,但是这只检查第一对 –

+0

不,它是为mapA和MapB的所有键itarate,并获得不同的键值。之后,我们检查map中的值是否等于并用diff来创建字符串 –

相关问题