IndexedVector.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr.collections.impl;
  2. /* ANTLR Translator Generator
  3.  * Project led by Terence Parr at http://www.jGuru.com
  4.  * Software rights: http://www.antlr.org/RIGHTS.html
  5.  *
  6.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/collections/impl/IndexedVector.java#1 $
  7.  */
  8. import java.util.Hashtable;
  9. import java.util.Enumeration;
  10. import antlr.collections.impl.Vector;
  11. /**
  12.  * A simple indexed vector: a normal vector except that you must
  13.  * specify a key when adding an element.  This allows fast lookup
  14.  * and allows the order of specification to be preserved. 
  15.  */
  16. public class IndexedVector {
  17. protected Vector elements;
  18. protected Hashtable index;
  19. /**
  20.  * IndexedVector constructor comment.
  21.  */
  22. public IndexedVector() {
  23. elements = new Vector(10);
  24. index = new Hashtable(10);
  25. }
  26. /**
  27.  * IndexedVector constructor comment.
  28.  * @param size int
  29.  */
  30. public IndexedVector(int size) {
  31. elements = new Vector(size);
  32. index = new Hashtable(size);
  33. }
  34. public synchronized void appendElement(Object key, Object value) {
  35. elements.appendElement(value);
  36. index.put(key, value);
  37. }
  38. /**
  39.  * Returns the element at the specified index.
  40.  * @param index the index of the desired element
  41.  * @exception ArrayIndexOutOfBoundsException If an invalid
  42.  * index was given.
  43.  */
  44. public Object elementAt(int i) {
  45. return elements.elementAt(i);
  46. }
  47. public Enumeration elements() {
  48. return elements.elements();
  49. }
  50. public Object getElement(Object key) {
  51. Object o = index.get(key);
  52. return o;
  53. }
  54. /** remove element referred to by key NOT value; return false if not found. */
  55. public synchronized boolean removeElement(Object key) {
  56. Object value = index.get(key);
  57. if ( value == null ) {
  58. return false;
  59. }
  60. index.remove(key);
  61. elements.removeElement(value);
  62. return false;
  63. }
  64. public int size() {
  65. return elements.size();
  66. }
  67. }