1: /**
2: A class of bags whose entries are stored in a fixed-size array.
3: INITIAL, INCOMPLETE DEFINITION; no security checks
4: @version 4.0
5: @author Frank M. Carrano
6: */
7: public final class ArrayBag1<T> implements BagInterface<T>
8: {
9: private final T[] bag;
10: private int numberOfEntries;
11: private static final int DEFAULT_CAPACITY = 25;
12:
13: /** Creates an empty bag whose capacity is 25. */
14: public ArrayBag1()
15: {
16: this(DEFAULT_CAPACITY);
17: } // end default constructor
18:
19: /** Creates an empty bag having a given capacity.
20: @param capacity The integer capacity desired. */
21: public ArrayBag1(int capacity)
22: {
23: // The cast is safe because the new array contains null entries
24: @SuppressWarnings("unchecked")
25: T[] tempBag = (T[])new Object[/*desiredC*/capacity]; // Unchecked cast
26: bag = tempBag;
27: numberOfEntries = 0;
28: } // end constructor
29:
30: /** Adds a new entry to this bag.
31: @param newEntry The object to be added as a new entry.
32: @return True if the addition is successful, or false if not. */
33: public boolean add(T newEntry)
34: {
35: boolean result = true;
36: if (isArrayFull())
37: {
38: result = false;
39: }
40: else
41: { // Assertion: result is true here
42: bag[numberOfEntries] = newEntry;
43: numberOfEntries++;
44: } // end if
45:
46: return result;
47: } // end add
48:
49: /** Retrieves all entries that are in this bag.
50: @return A newly allocated array of all the entries in this bag. */
51: public T[] toArray()
52: {
53: // The cast is safe because the new array contains null entries.
54: @SuppressWarnings("unchecked")
55: T[] result = (T[])new Object[numberOfEntries]; // Unchecked cast
56:
57: for (int index = 0; index < numberOfEntries; index++)
58: {
59: result[index] = bag[index];
60: } // end for
61:
62: return result;
63: // Note: The body of this method could consist of one return statement,
64: // if you call Arrays.copyOf
65: } // end toArray
66:
67: // Returns true if the array bag is full, or false if not.
68: private boolean isArrayFull()
69: {
70: return numberOfEntries >= bag.length;
71: } // end isArrayFull
72:
73: // Throws an exception if receiving object is not initialized.
74: // private void checkInitialization()
75: // {
76: // if (!initialized)
77: // throw new IllegalStateException("Uninitialized object used " +
78: // "to call an ArrayBag method.");
79: // } // end checkInitialization
80: // STUBS:
81: /** Sees whether this bag is empty.
82: @return True if this bag is empty, or false if not */
83: public boolean isEmpty()
84: {
85: return false; //STUB
86: } // end isEmpty
87:
88: /** Gets the number of entries currently in this bag.
89: @return The integer number of entries currently in this bag */
90: public int getCurrentSize()
91: {
92: return -1; // STUB
93: } // end getCurrentSize
94:
95: /** Removes one unspecified entry from this bag, if possible.
96: @return Either the removed entry, if the removal
97: was successful, or null */
98: public T remove()
99: {
100: return null; // STUB
101: } // end remove
102:
103: /** Removes one occurrence of a given entry from this bag.
104: @param anEntry The entry to be removed
105: @return True if the removal was successful, or false otherwise */
106: public boolean remove(T anEntry)
107: {
108: return false; // STUB
109: } // end remove
110:
111: /** Removes all entries from this bag. */
112: public void clear()
113: {
114: // STUB
115: } // end clear
116:
117: /** Counts the number of times a given entry appears in this bag.
118: @param anEntry The entry to be counted
119: @return The number of times anEntry appears in the bag */
120: public int getFrequencyOf(T anEntry)
121: {
122: return 0; // STUB
123: } // end getFrequencyOf
124:
125: /** Tests whether this bag contains a given entry.
126: @param anEntry The entry to locate
127: @return True if this bag contains anEntry, or false otherwise */
128: public boolean contains(T anEntry)
129: {
130: return false; // STUB
131: } // end contains
132: } // end ArrayBag1
133:
134:
135:
136: