001: /* Copyright (c) 2001-2005, The HSQL Development Group
002: * All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * Redistributions of source code must retain the above copyright notice, this
008: * list of conditions and the following disclaimer.
009: *
010: * Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * Neither the name of the HSQL Development Group nor the names of its
015: * contributors may be used to endorse or promote products derived from this
016: * software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
022: * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
025: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
026: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
027: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
028: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package org.hsqldb.lib;
032:
033: import org.hsqldb.store.BaseHashMap;
034:
035: /**
036: *
037: * @author fredt@users
038: * @version 1.7.2
039: * @since 1.7.2
040: */
041: public class IntKeyHashMap extends BaseHashMap {
042:
043: Set keySet;
044: Collection values;
045:
046: public IntKeyHashMap() {
047: this (16, 0.75f);
048: }
049:
050: public IntKeyHashMap(int initialCapacity)
051: throws IllegalArgumentException {
052: this (initialCapacity, 0.75f);
053: }
054:
055: public IntKeyHashMap(int initialCapacity, float loadFactor)
056: throws IllegalArgumentException {
057: super (initialCapacity, loadFactor, BaseHashMap.intKeyOrValue,
058: BaseHashMap.objectKeyOrValue, false);
059: }
060:
061: public Object get(int key) {
062:
063: int lookup = getLookup(key);
064:
065: if (lookup != -1) {
066: return objectValueTable[lookup];
067: }
068:
069: return null;
070: }
071:
072: public Object put(int key, Object value) {
073: return super .addOrRemove(key, 0, null, value, false);
074: }
075:
076: public boolean containsValue(Object value) {
077: return super .containsValue(value);
078: }
079:
080: public Object remove(int key) {
081: return super .addOrRemove(key, 0, null, null, true);
082: }
083:
084: public Set keySet() {
085:
086: if (keySet == null) {
087: keySet = new KeySet();
088: }
089:
090: return keySet;
091: }
092:
093: public Collection values() {
094:
095: if (values == null) {
096: values = new Values();
097: }
098:
099: return values;
100: }
101:
102: class KeySet implements Set {
103:
104: public Iterator iterator() {
105: return IntKeyHashMap.this .new BaseHashIterator(true);
106: }
107:
108: public int size() {
109: return IntKeyHashMap.this .size();
110: }
111:
112: public boolean contains(Object o) {
113: throw new RuntimeException();
114: }
115:
116: public Object get(Object key) {
117: throw new RuntimeException();
118: }
119:
120: public boolean add(Object value) {
121: throw new RuntimeException();
122: }
123:
124: public boolean addAll(Collection c) {
125: throw new RuntimeException();
126: }
127:
128: public boolean remove(Object o) {
129: throw new RuntimeException();
130: }
131:
132: public boolean isEmpty() {
133: return size() == 0;
134: }
135:
136: public void clear() {
137: IntKeyHashMap.this .clear();
138: }
139: }
140:
141: class Values implements Collection {
142:
143: public Iterator iterator() {
144: return IntKeyHashMap.this .new BaseHashIterator(false);
145: }
146:
147: public int size() {
148: return IntKeyHashMap.this .size();
149: }
150:
151: public boolean contains(Object o) {
152: throw new RuntimeException();
153: }
154:
155: public boolean add(Object value) {
156: throw new RuntimeException();
157: }
158:
159: public boolean addAll(Collection c) {
160: throw new RuntimeException();
161: }
162:
163: public boolean remove(Object o) {
164: throw new RuntimeException();
165: }
166:
167: public boolean isEmpty() {
168: return size() == 0;
169: }
170:
171: public void clear() {
172: IntKeyHashMap.this.clear();
173: }
174: }
175: }
|