/*
* Created on 13.8.2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.idega.util.datastructures;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Title: ConsistentMap
* Description: - Not fully implemented - <p> returns valeues and keys in the same order that they are putted
* Copyright: Copyright (c) 2003
* Company: idega Software
* @author 2003 - idega team - <br><a href="mailto:gummi@idega.is">Gudmundur Agust Saemundsson</a><br>
* @version 0.5
*/
public class QueueMap extends HashMap implements Map {
private QueueSet _keySet = new QueueSet();
private List keyList = new ArrayList();
private List _valueList = new ArrayList();
/**
* @param initialCapacity
* @param loadFactor
*/
public QueueMap(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
}
/**
* @param initialCapacity
*/
public QueueMap(int initialCapacity) {
super(initialCapacity);
}
/**
*
*/
public QueueMap() {
super();
}
/**
* @param m
*/
public QueueMap(Map m) {
super(m);
}
public Object put(Object key, Object value){
removeKey(key);
this.keyList.add(key);
this._keySet.add(key);
this._valueList.add(value);
return super.put(key,value);
}
public Object putAtBeginning(Object key, Object value){
removeKey(key);
this.keyList.add(0,key);
this._keySet.addAtBeginning(key);
this._valueList.add(0,value);
return super.put(key,value);
}
public Object remove(Object key){
Object val = super.remove(key);
removeKey(key);
return val;
}
public Set keySet(){
return this._keySet;
}
public Collection values(){
return this._valueList;
}
public Iterator iterator() {
return this._valueList.iterator();
}
private void removeKey(Object key) {
int oldKeyIndex = this.keyList.indexOf(key);
if (oldKeyIndex > -1) {
if(this._valueList.size()>oldKeyIndex){
this._valueList.remove(oldKeyIndex);
}
this.keyList.remove(key);
this._keySet.remove(key);
}
}
}