package com.opendoorlogistics.core.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Set; import java.util.Map.Entry; public class MultiHashMap<K,V> { private final HashMap<K, List<V>> map; public MultiHashMap(){ map = new HashMap<>(); } public MultiHashMap(int initialCapacity){ map = new HashMap<>(initialCapacity); } public List<V> get(K key){ return map.get(key); } public void put(K key, V value){ List<V> list = map.get(key); if(list==null){ list = new ArrayList<>(1); map.put(key, list); } list.add(value); } public void remove(K key, V value){ List<V> list = map.get(key); if(list!=null){ list.remove(value); if(list.size()==0){ map.remove(key); } } } public void remove(K key){ map.remove(key); } public int keySize(){ return map.size(); } public Set<K> keySet(){ return map.keySet(); } public Set<Entry<K, List<V>>> entrySet(){ return map.entrySet(); } }