IndexedVector.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
- package antlr.collections.impl;
- /* ANTLR Translator Generator
- * Project led by Terence Parr at http://www.jGuru.com
- * Software rights: http://www.antlr.org/RIGHTS.html
- *
- * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/collections/impl/IndexedVector.java#1 $
- */
- import java.util.Hashtable;
- import java.util.Enumeration;
- import antlr.collections.impl.Vector;
- /**
- * A simple indexed vector: a normal vector except that you must
- * specify a key when adding an element. This allows fast lookup
- * and allows the order of specification to be preserved.
- */
- public class IndexedVector {
- protected Vector elements;
- protected Hashtable index;
- /**
- * IndexedVector constructor comment.
- */
- public IndexedVector() {
- elements = new Vector(10);
- index = new Hashtable(10);
- }
- /**
- * IndexedVector constructor comment.
- * @param size int
- */
- public IndexedVector(int size) {
- elements = new Vector(size);
- index = new Hashtable(size);
- }
- public synchronized void appendElement(Object key, Object value) {
- elements.appendElement(value);
- index.put(key, value);
- }
- /**
- * Returns the element at the specified index.
- * @param index the index of the desired element
- * @exception ArrayIndexOutOfBoundsException If an invalid
- * index was given.
- */
- public Object elementAt(int i) {
- return elements.elementAt(i);
- }
- public Enumeration elements() {
- return elements.elements();
- }
- public Object getElement(Object key) {
- Object o = index.get(key);
- return o;
- }
- /** remove element referred to by key NOT value; return false if not found. */
- public synchronized boolean removeElement(Object key) {
- Object value = index.get(key);
- if ( value == null ) {
- return false;
- }
- index.remove(key);
- elements.removeElement(value);
- return false;
- }
- public int size() {
- return elements.size();
- }
- }