The pages of this web site are not formatted to conserve paper, but my new book (ISBN: 0-9745862-0-X) is formatted to save paper, save your printer cartridge, save a loose-leaf binder, and save money. If you prefer to work my exams from printed pages, then give your printer a rest and buy my new book.
Today, you can find my book at amazon.com.
| No. | Answer | Remark | |
|---|---|---|---|
| 1 | d | SortedSet | The Map interface organizes entries as key/value pairs. A list generally allows duplicate entries. A Set rejects duplicate entries. The SortedSet is similar to a Set except that the ordering of the elements is determined by a Comparator or the Comparable interface. |
| 2 | d | Prints: false,true,true | LinkedHashMap does not implement the Collection interface. LinkedHashMap extends HashMap and implements Map, Cloneable and Serializable. |
| 3 | g | Prints: true,true,false | LinkedHashSet does not implement the List interface. LinkedHashSet extends HashSet and implements Collection, Set, Cloneable and Serializable. |
| 4 | h | Prints: true,true,true | LinkedHashSet is a subclass of HashSet; therefore, it is also a subclass of AbstractSet, and it implements the Collection interface. |
| 5 | e | Prints: true,false,false |
The
|
| 6 | c | Prints: false,true,false | Both HashMap and TreeMap are subclasses of type AbstractMap; so both implement the Map interface. Neither implements the Collection interface. The TreeMap implements the SortedMap interface, but HashMap does not. |
| 7 | d | Prints: false,true,true | ListIterator extends Iterator. |
| 8 | f g | LinkedHashMap LinkedHashSet | The HashMap, HashSet and Hashtable classes are all implemented with an internal hashtable that organizes the elements in buckets according to the hashcode and not according to the order of insertion. The LinkedHashMap and LinkedHashSet classes also use an internal hashtable, and both also maintain a linked list through all of the elements. The order of the list is determined by the order of insertion. Optionally, the LinkedHashMap can maintain the order of the list based on the time of the most recent access of each element. The TreeMap and TreeSet classes are both implemented using a tree structure that is ordered based on a Comparator or the Comparable interface. |
| 9 | b d | The Enumeration interface declares only two methods: hasMoreElements and nextElement. The Iterator interface declares a total of three methods. | The Enumeration interface was introduced with Java 1.0 to provide an easy means of moving through the elements of a Vector or the keys or values of a Hashtable. The Iterator interface was introduced with the collections framework with Java 1.2. The Iterator interface declares three methods: hasNext, next and remove. The first two methods, hasNext and next, are similar to the two methods declared in the Enumeration interface, hasMoreElements and nextElement. The third method of the Iterator interface, remove, provides new functionality relative to the Enumeration interface. |
| 10 | e | None of the above. | The Iterator interface declares three methods: hasNext, next and remove. The ListIterator interface was introduced in Java 1.2 along with the Iterator interface. The ListIterator interface extends the Iterator interface and declares additional methods to provide forward and backward iteration capabilities, List modification capabilities and the ability to determine the position of the iterator in the List. The ListIterator interface does not extend the List interface. |
| 11 | f | HashMap | The requirement to store key/value pairs is directly satisfied by a concrete implementation of the Map interface. The List and Set interfaces recognize objects, but do not recognize keys and values. The requirement to allow null elements is not satisfied by a Hashtable. TreeMap and TreeSet store elements in a sorted order based on the key. The iteration order of LinkedHashMap and LinkedHashSet is not unspecified. By default, the iteration order of LinkedHashMap and LinkedHashSet is based on the order in which elements were inserted. Optionally, the iteration order of the LinkedHashMap can be set to the order in which the elements were last accessed. |
| 12 | h | Hashtable | The requirement to store key/value pairs is directly satisfied by a Hashtable or any concrete implementation of the Map interface. The List and Set interfaces recognize objects, but do not recognize keys and values. The requirement to NOT allow null elements is satisfied by Hashtable, but not by HashMap or any of the other Collection implementations that were introduced with Java 1.2 and later. |
| 13 | a f h | LinkedHashMap HashMap Hashtable | The requirement to store key/value pairs is directly satisfied by a concrete implementation of the Map interface. The List and Set interfaces recognize objects, but do not recognize keys and values. The Hashtable, HashMap and LinkedHashMap classes store elements in a hashtable. Elements are accessed using a hashcode that identifies the bucket that contains the element. Access time is therefore not dependent on the number of buckets. As long as the hashcode methods of the elements are properly implemented, the time required to access an element in a hashtable remains constant as the number of buckets in the hashtable grows. In contrast, the TreeMap and TreeSet classes store elements in a sorted order in a tree structure. Access to any element requires walking the tree; so access time depends on the size of the tree. |
| 14 | b | Prints: false,false,true |
The
Collections
class is not the same as the
Collection
interface. The
Collections
class contains a variety of methods used to work with
collections. For example,
|
| 15 | e | LinkedHashSet | The elements of a Map are key/value pairs; so a Map is not a good choice. A List generally accepts duplicate elements. A Set stores a collection of unique elements. Any attempt to store a duplicate element in a Set is rejected. TreeSet stores elements in a sorted order based on the key. HashSet does not sort the elements based on the key. The iteration order of LinkedHashMap and LinkedHashSet is clearly defined. By default, the iteration order of LinkedHashMap and LinkedHashSet is based on the order in which elements were inserted. While a LinkedHashSet rejects duplicate entries, the LinkedHashMap allows duplicate entries to replace old entries. |
| 16 | d | LinkedHashSet |
The iteration order of a
Set
is the order in which an iterator moves through the elements of the
Set.
The iteration order of a
LinkedHashSet
is determined by the order in which elements are inserted.
When a reference to an existing
Set
is passed as an argument to the constructor of
LinkedHashSet,
the
|
| 17 | f | LinkedHashMap |
The iteration order of a
Map
is the order in which an iterator moves through the elements of the
Map.
The iteration order of a
LinkedHashMap
is determined by the order in which elements are inserted.
When a reference to an existing
Map
is passed as an argument to the constructor of
LinkedHashMap,
the
|
| 18 | a | LinkedHashMap | The requirement to store key/value pairs is directly satisfied by a concrete implementation of the Map interface. The List and Set interfaces recognize objects, but do not recognize keys and values. The requirement to allow null elements is not satisfied by a Hashtable. The LinkedHashMap offers the option to remove the least recently used (LRU) element when a new element is added. The LinkedHashSet does not offer the LRU option. |
| 19 | d | LinkedList | A stack or queue must be implemented using a data structure that stores the elements based on the order of insertion. Any data structure that is implemented using a hashtable is not a good choice. The ArrayList and Vector are both implemented using an internal array. Although an array allows elements to be easily organized based on the order of insertion, an array does not allow the list of elements to be easily shifted in memory as elements are appended to the tail of the list and removed from the head of the list. The LinkedList is implemented using a doubly linked list that allows elements to be easily appended to the tail of the list, and removed from the head of the list. |
| 20 | c | LinkedList | The LinkedList class provides methods such as addFirst, addLast, getFirst, getLast, removeFirst and removeLast that facilitate the implementation of stacks and queues. |
| 21 | g | None of the above. | The RandomAccess interface is a marker interface; so it does not declare any methods. Its purpose is to provide information about the RandomAccess capabilities of a List implementation. Generic list algorithms can check to see if an instance of a List implements the RandomAccess marker interface. If not, then the algorithm can avoid operations that require fast random access. Both Vector and ArrayList implement the RandomAccess interface. LinkedList does not implement RandomAccess. |
| 22 | b | The ListIterator interface extends both the List and Iterator interfaces. | The ListIterator interface extends the Iterator interface and declares additional methods to provide forward and backward iteration capabilities, List modification capabilities and the ability to determine the position of the iterator in the List. |