Java tutorial
/////////////////////////////////////////////////////////////////////////////// //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; } } }