HashList.java Source code

Java tutorial

Introduction

Here is the source code for HashList.java

Source

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