我有两个哈希映射,如下所示:
1.=============Employee=================
Key : 1_10 : Value : 13/04/2012
Key : 1_11 : Value : 18/04/2012
Key : 1_12 : Value : 19/04/2012
Key : 1_14 : Value : 23/04/2012
Key : 1_13 : Value : 20/04/2012
Key : 1_16 : Value : 25/04/2012
Key : 1_1 : Value : 02/04/2012
Key : 1_15 : Value : 24/04/2012
Key : 1_18 : Value : 27/04/2012
Key : 1_3 : Value : 04/04/2012
Key : 1_17 : Value : 26/04/2012
Key : 1_2 : Value : 03/04/2012
Key : 1_5 : Value : 06/04/2012
Key : 1_19 : Value : 30/04/2012
Key : 1_4 : Value : 05/04/2012
Key : 1_7 : Value : 10/04/2012
Key : 1_6 : Value : 09/04/2012
Key : 1_9 : Value : 12/04/2012
Key : 1_8 : Value : 11/04/2012
2.=============Working day=================
Key : 27 : Value : 27/4/2012
Key : 02 : Value : 02/4/2012
Key : 26 : Value : 26/4/2012
Key : 19 : Value : 19/4/2012
Key : 11 : Value : 11/4/2012
Key : 04 : Value : 04/4/2012
Key : 30 : Value : 30/4/2012
Key : 06 : Value : 06/4/2012
Key : 13 : Value : 13/4/2012
Key : 09 : Value : 09/4/2012
Key : 03 : Value : 03/4/2012
Key : 23 : Value : 23/4/2012
Key : 20 : Value : 20/4/2012
Key : 16 : Value : 16/4/2012
Key : 10 : Value : 10/4/2012
Key : 18 : Value : 18/4/2012
Key : 25 : Value : 25/4/2012
Key : 17 : Value : 17/4/2012
Key : 12 : Value : 12/4/2012
Key : 24 : Value : 24/4/2012
Key : 05 : Value : 05/4/2012
键不相同,但值相同,有时值不相同。
我想找出与employeemap
workingdaymap
中不存在的值
if (!employeeMap.containsValue(workingdayMap.get(wKey))) {
//take the value which is not present in employeeMap which is present in workingdayMap
}
但它从employeeMap给我null。
你能帮我解决一下吗?
此致 贝
答案 0 :(得分:2)
是值日期对象吗?如果是这样,你试图看看地图是否包含相同的对象(除非你在两个地图中存储了EXACT相同的实例,否则它的散列将是不同的)而不是对象的值。
答案 1 :(得分:2)
这样的事情应该有效:
Set workingValues = new HashSet(workingdayMap.values());
workingValues.removeAll(employeeMap.values());
我们使用workingdayMap
方法从values()
获取所有值。我们不希望直接修改此Collection
,因为这会修改workingdayMap
,因此我们会创建一个名为Set
的值workingValues
。
然后,我们会删除在employeeMap
中找到的所有值,这些值将保留workingdayMap
中employeeMap
但不在workingValues
{{1}}中的值。
答案 2 :(得分:2)
请你这样试试。
HashMap<String, Date> employeeMap = new HashMap<String, Date>();
HashMap<String, Date> workingdaymap = new HashMap<String, Date>();
Set<String> values1 = new HashSet<String>(employeeMap.values());
Set<String> values2 = new HashSet<String>(workingdaymap.values());
boolean equal = values1.equals(value2);
答案 3 :(得分:0)
下面是完美运行的代码,比较失败的原因是地图值不同。
Key : 27 : Value : 27/4/2012, Key : 1_18 : Value : 27/04/2012
如果我们看到日期,可以清楚地看到差异。 27/4/2012
与27/04/2012
不同,因为我将其存储为字符串。
Iterator<Map.Entry<String,String>> holyDayiterator = workingdayMap.entrySet().iterator();
while (holyDayiterator.hasNext()) {
Map.Entry holiDayEntry = holyDayiterator.next();
if(!employeeMap.containsValue((holiDayEntry.getValue()))){
System.out.println("works perfect");
}
感谢你们的支持以及那些已经放弃投票的人们。
:) 贝