diff --git a/common/source/java/ch/systemsx/cisd/common/collections/TableMap.java b/common/source/java/ch/systemsx/cisd/common/collections/TableMap.java index 333e141b7ad3e0d4a3a85eb14003680aa8fb6bed..84ce6d333b20c3536219353148343861c94e68fd 100644 --- a/common/source/java/ch/systemsx/cisd/common/collections/TableMap.java +++ b/common/source/java/ch/systemsx/cisd/common/collections/TableMap.java @@ -106,21 +106,12 @@ public class TableMap<K, E> implements Iterable<E> public final void add(final E row) { final K key = extractor.getKey(row); - if (map.get(key) != null) - { - switch (uniqueKeyViolationStrategy) - { - case KEEP_FIRST: - break; - case KEEP_LAST: - map.put(key, row); - break; - case ERROR: - throw new UniqueKeyViolationException("Key '" + key.toString() + "' already in the map."); - } - } else + if (uniqueKeyViolationStrategy == UniqueKeyViolationStrategy.KEEP_LAST || map.get(key) == null) { map.put(key, row); + } else if (uniqueKeyViolationStrategy == UniqueKeyViolationStrategy.ERROR) + { + throw new UniqueKeyViolationException("Key '" + key.toString() + "' already in the map."); } }