/*
 * ListMap.java
 *
 * Created on 2006/12/06, 13:02
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.itscool.commons.collection;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 *
 * @author ios
 */
public class ListMap implements Map{
    private KeyLinkedList list = new KeyLinkedList();
    
    public int size(){
        return list.size();
    }
    
    public boolean isEmpty(){
        return false;
    }
    
    /**
     * 指定されたキーのマッピングがマップに含まれている場合に true を返します。
     * つまり、マップに、(key==null ? k==null : key.equals(k)) となるキーk の
     * マッピングが含まれている場合にだけ true を返します。
     * マップはこのようなマッピングを 1 つだけ含むことができます。
     * @param key キー
     * @return マップが指定のキーのマッピングを保持する場合は true  
     **/
    public boolean containsKey(Object key){
        if(list.get(key)!=null){
            return true;
        }else{
            return false;
        }
    }
    
    public boolean containsValue(Object value){
        int size = list.size();
        for(int i=0; i<size; i++ ){
            Object check = list.get(i);
            if(value==null || check==null){
                return false;
            }else if(value.equals(check)){
                return true;
            }
        }
        return false;
    }
    
    public Object get(Object key){
        return list.get(key);
    }
    
    public List getList(Object key){
        return list.getList(key);
    }
    
    public Object put(Object key, Object value){
        return list.put(key, value);
    }
    
    public Object remove(Object key){
        return list.remove(key);
    }
    
    public void putAll(Map t){
        Set keySet = t.keySet();
        Iterator it = keySet.iterator();
        while(it.hasNext()){
            Object key = it.next();
            Object value = t.get(key);
            list.put(key, value);
        }
    }
    
    public void clear(){
        list.clear();
    }
    
    public Set keySet(){
        return list.keySet();
    }
    
    public Collection values(){
        return list.values();
    }
    
    public Set entrySet(){
        return null;
    }
    
}
