Introduction
We learned in an earlier module that the framework provides at least nine concrete implementations of the interfaces in the framework. Thesenine implementation classes are available for immediate instantiation to produce objects to satisfy your collection needs.
We also learned that the framework provides at least three incomplete implementations. These classes are available for you to use as a starting point in defining yourown implementations. Default implementations of many of the interface methods are provided in the incomplete implementations.
Discussion and sample code
Purpose of implementations
The implementations in the Java Collections Framework are the concrete definitions of the classes that implement the core collection interfaces . For example, concrete implementations in the Java CollectionsFramework are provided by at least the following nine classes.
- HashSet
- TreeSet
- LinkedList
- ArrayList
- Vector
- HashMap
- WeakHashMap
- TreeMap
- Hashtable
Available for immediate use
These classes are available for immediate use to instantiate collection objects.
As you can see, there are two classes that obviously fall into the Set category, two that obviously fall into the List category, and three that obviously fall into the Map category. You can learn more about the detailed characteristics of those classes in the standard Java documentation andin The Java Tutorials .
This leaves two additional classes whose names don't readily divulge the category to which they belong.
Vector and Hashtable classes
The classes Vector and Hashtable were part of Java even before the Java Collections Framework became available. The Vector class can be used to instantiate objects that fall in the general List category.
The Hashtable class can be used to instantiate objects that fall in the Map category.
These two classes have been upgraded to make them compatible with the Collections Framework.
Abstract implementations
In addition to the concrete implementations listed above, the following three classes partially implement the interfaces, but are not intended forinstantiation. Rather, they are intended to be extended into new concrete classes that you define.
- AbstractSet
- AbstractList
- AbstractMap
Therefore, by either using one of the three classes listed above as a starting point, or by starting from scratch and fully implementing one or moreof the interfaces, you can provide new concrete implementations to augment the framework to include collections that meet your special needs. If you do that,be sure to satisfy the contract requirements of the Collections Framework in addition to the technical requirements imposed by implementing interfaces.
Purpose of algorithms
Algorithms are methods (not necessarily exposed) that provide useful capabilities, such as searching and sorting. For example, the Collection interface declares an exposed method named contains .
The contains method
The contract for the contains method requires that the method:
- receives an incoming reference of type Object as a parameter
- searches the collection looking for an element that matches the incoming reference
- returns true if the collection on which the method is called contains the specified element and returns false otherwise.