icegem-cache-utils/src/main/java/com/googlecode/icegem/cacheutils/regioncomparator/CompareTool.java
private static Map<String, Set> compareAndAggregate(Map sourceMap, Map targetMap) {
        //keys witch values are different
        System.out.println("compare maps");
        System.out.println("source: " + sourceMap);
        System.out.println("target: " + targetMap);
        Map<String, Set> aggregationInfo = new HashMap<String, Set>();
        Set<Object> keysForDiffValues = new HashSet<Object>();
        for (Object regionKey : targetMap.keySet()) {
            if (!targetMap.get(regionKey).equals(sourceMap.get(regionKey)))      //we compare not original values, but it's hash code
                keysForDiffValues.add(regionKey);
        }

        aggregationInfo.put("diffValues", keysForDiffValues);
        return aggregationInfo;
    }
private static Map<String, Set> compareAndAggregate(Map sourceMap, Map targetMap) {
        //keys witch values are different
        System.out.println("compare maps");
        System.out.println("source: " + sourceMap);
        System.out.println("target: " + targetMap);
        Map<String, Set> aggregationInfo = new HashMap<String, Set>();
        Set<Object> keysForDiffValues = new HashSet<Object>();
        for (Object regionKey : targetMap.keySet()) {
            if (!targetMap.get(regionKey).equals(sourceMap.get(regionKey)))      //we compare not original values, but it's hash code
                keysForDiffValues.add(regionKey);
        }

        aggregationInfo.put("diffValues", keysForDiffValues);
        return aggregationInfo;
    }
compare two snapshots from source and target maps
format: key: absentKeys or map