package org.hsqldb.lib;
import org.hsqldb.map.BaseHashMap;
public class OrderedIntKeyHashMap extends BaseHashMap {
Set keySet;
Collection values;
public OrderedIntKeyHashMap() {
this(8);
}
public OrderedIntKeyHashMap(int initialCapacity)
throws IllegalArgumentException {
super(initialCapacity, BaseHashMap.intKeyOrValue,
BaseHashMap.objectKeyOrValue, false);
isList = true;
}
public int getKey(int lookup, int def) {
if (lookup >= 0 && lookup < size()) {
return this.intKeyTable[lookup];
}
return def;
}
public Object getValue(int lookup) {
if (lookup >= 0 && lookup < size()) {
return this.objectValueTable[lookup];
}
return null;
}
public Object get(int key) {
int lookup = getLookup(key);
if (lookup != -1) {
return objectValueTable[lookup];
}
return null;
}
public Object put(int key, Object value) {
return super.addOrRemove(key, value, null, false);
}
public boolean containsValue(Object value) {
return super.containsValue(value);
}
public Object remove(int key) {
int lookup = getLookup(key);
if (lookup < 0) {
return null;
}
Object returnValue = super.addOrRemove(key, null, null, true);
removeRow(lookup);
return returnValue;
}
public Object removeKeyAndValue(int index)
throws IndexOutOfBoundsException {
checkRange(index);
return remove(intKeyTable[index]);
}
public boolean containsKey(int key) {
return super.containsKey(key);
}
public void valuesToArray(Object[] array) {
Iterator it = values().iterator();
int i = 0;
while (it.hasNext()) {
array[i] = it.next();
i++;
}
}
public Set keySet() {
if (keySet == null) {
keySet = new KeySet();
}
return keySet;
}
public Collection values() {
if (values == null) {
values = new Values();
}
return values;
}
private void checkRange(int i) {
if (i < 0 || i >= size()) {
throw new IndexOutOfBoundsException();
}
}
class KeySet implements Set {
public Iterator iterator() {
return OrderedIntKeyHashMap.this.new BaseHashIterator(true);
}
public int size() {
return OrderedIntKeyHashMap.this.size();
}
public boolean contains(Object o) {
throw new UnsupportedOperationException();
}
public Object get(Object key) {
throw new UnsupportedOperationException();
}
public boolean add(Object value) {
throw new UnsupportedOperationException();
}
public boolean addAll(Collection c) {
throw new UnsupportedOperationException();
}
public boolean remove(Object o) {
throw new UnsupportedOperationException();
}
public boolean isEmpty() {
return size() == 0;
}
public void clear() {
OrderedIntKeyHashMap.this.clear();
}
}
class Values implements Collection {
public Iterator iterator() {
return OrderedIntKeyHashMap.this.new BaseHashIterator(false);
}
public int size() {
return OrderedIntKeyHashMap.this.size();
}
public boolean contains(Object o) {
throw new UnsupportedOperationException();
}
public boolean add(Object value) {
throw new UnsupportedOperationException();
}
public boolean addAll(Collection c) {
throw new UnsupportedOperationException();
}
public boolean remove(Object o) {
throw new UnsupportedOperationException();
}
public boolean isEmpty() {
return size() == 0;
}
public void clear() {
OrderedIntKeyHashMap.this.clear();
}
}
}