Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Class which creates mapping between keys and a list of values

/////////////////////////////////////////////////////////////////////////////// //Copyright (C) 2003 Jeremy LaCivita // //This library is free software; you can redistribute it and/or //modify it under the terms of the GNU Lesser General Public //License as published by the Free Software Foundation; either //version 2.1 of the License, or (at your option) any later version. // //This library 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 Lesser General Public License for more details. // //You should have received a copy of the GNU Lesser General Public //License along with this program; if not, write to the Free Software //Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. ////////////////////////////////////////////////////////////////////////////// //package opennlp.tools.util; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; /**   * Class which creates mapping between keys and a list of values.    */ public class HashList extends HashMap {   private static final long serialVersionUID = 1;      public HashList() {     super();   }      public Object get(Object key, int index) {     if (get(key) == null) {       return get(key);     }     else {       return ((List)get(key)).get(index);     }   }   public Object putAll(Object key, Collection values) {     List o = (List)get(key);     if (o == null) {       o = new ArrayList();       super.put(key, o);     }     o.addAll(values);     if (o.size() == values.size())       return null;     else       return o;   }   public Object put(Object key, Object value) {     List o = (List)get(key);          if (o == null) {       o = new ArrayList();       super.put(key, o);     }      o.add(value);     if(o.size() == 1)       return null;     else       return o;   }   public boolean remove(Object key, Object value) {     List l = (List) get(key);     if (l == null) {       return false;     }     else {       boolean r = l.remove(value);       if (l.size() == 0) {   remove(key);       }       return r;     }   } }