summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/utilities/datastructures/HashMapList.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/datastructures/HashMapList.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/datastructures/HashMapList.java124
1 files changed, 0 insertions, 124 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/HashMapList.java b/src/de/lmu/ifi/dbs/elki/utilities/datastructures/HashMapList.java
deleted file mode 100644
index 26fa4d19..00000000
--- a/src/de/lmu/ifi/dbs/elki/utilities/datastructures/HashMapList.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package de.lmu.ifi.dbs.elki.utilities.datastructures;
-
-/*
- This file is part of ELKI:
- Environment for Developing KDD-Applications Supported by Index-Structures
-
- Copyright (C) 2012
- Ludwig-Maximilians-Universität München
- Lehr- und Forschungseinheit für Datenbanksysteme
- ELKI Development Team
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * Multi-Associative container, that stores a list of values for a particular key.
- *
- * @author Erich Schubert
- *
- * @apiviz.has List oneway - - contains
- *
- * @param <K> Key type
- * @param <V> Value type
- */
-// TODO: use MultiValueMap from apache collections instead?
-public class HashMapList<K, V> extends HashMap<K, List<V>> {
- /**
- * Serial version
- */
- private static final long serialVersionUID = 3883242025598456055L;
-
- /**
- * Constructor.
- */
- public HashMapList() {
- super();
- }
-
- /**
- * Constructor with initial capacity (of the hash)
- *
- * @param initialCapacity initial capacity
- */
- public HashMapList(int initialCapacity) {
- super(initialCapacity);
- }
-
- /**
- * Add a single value to the given key.
- *
- * @param key Key
- * @param value Additional Value
- */
- public synchronized void add(K key, V value) {
- List<V> list = super.get(key);
- if (list == null) {
- list = new ArrayList<V>(1);
- super.put(key, list);
- }
- list.add(value);
- }
-
- /**
- * Check that there is at least one value for the key.
- */
- @Override
- public boolean containsKey(Object key) {
- List<V> list = super.get(key);
- if (list == null) {
- return false;
- }
- return list.size() > 0;
- }
-
- /**
- * Remove a single value from the map.
- *
- * @param key Key to remove
- * @param value Value to remove.
- * @return <tt>true</tt> if this list contained the specified element
- */
- public synchronized boolean remove(K key, V value) {
- List<V> list = super.get(key);
- if (list == null) {
- return false;
- }
- boolean success = list.remove(value);
- // remove empty lists.
- if (list.size() == 0) {
- super.remove(key);
- }
- return success;
- }
-
- /**
- * Test if a given value is already present for the key.
- *
- * @param key Key
- * @param value Value
- * @return <tt>true</tt> if the keys list contains the specified element
- */
- public boolean contains(K key, V value) {
- List<V> list = super.get(key);
- if (list == null) {
- return false;
- }
- return list.contains(value);
- }
-}