1 package net
.kezvh
.collections
;
4 import java
.util
.Map
.Entry
;
6 import net
.kezvh
.functional
.lambda
.EquivalenceRelation
;
10 * @param <K> FIXME comment
11 * @param <V> FIXME comment
13 public final class MapValuesEquivalence
<K
, V
> implements EquivalenceRelation
<Map
<K
, V
>> {
17 public static final MapValuesEquivalence
<?
, ?
> VALUES_EQUAL_EQUIVALATOR
= new MapValuesEquivalence
<Object
, Object
>();
19 private final EquivalenceRelation
<V
> valuesEquivalator
;
24 @SuppressWarnings("unchecked")
25 public MapValuesEquivalence() {
26 this((EquivalenceRelation
<V
>) EquivalenceRelation
.EQUALS
);
30 * @param valuesEquivalator FIXME comment
32 public MapValuesEquivalence(final EquivalenceRelation
<V
> valuesEquivalator
) {
33 this.valuesEquivalator
= valuesEquivalator
;
37 * @param param1 FIXME comment
38 * @param param2 FIXME comment
41 public Boolean
op(final Map
<K
, V
> param1
, final Map
<K
, V
> param2
) {
43 return param2
== null;
47 if (!param1
.keySet().equals(param2
.keySet()))
50 return this.valuesEqual(param1
, param2
);
53 private boolean valuesEqual(final Map
<K
, V
> m1
, final Map
<K
, V
> m2
) {
54 for (final Entry
<K
, V
> entry
: m1
.entrySet()) {
55 final K key
= entry
.getKey();
56 final V value1
= entry
.getValue();
57 final V value2
= m2
.get(key
);
59 if (!this.valuesEquivalator
.op(value1
, value2
))