Interfaces in the Wild
The first situations where you’ll want to use interfaces involve applying pre-defined interfaces and classes that are part of Java. Here are a few examples.
Comparable<T>
Purpose: A class implements Comparable<T>
in order to allow comparison—in a “greater than” and “less than” sense—to another instance of the class. This is a “parameterized” interface, which means that you need to specify the class that it will be comparing. For example, Comparable<Job>
would compare Job
objects.
Important Methods: compareTo(T)
Comparator<T>
Purpose: Compares two objects of a given class. To allow comparisons and ordering based on the different fields, you can create several different Comparator
classes. The class for the compared objects does NOT implement the interface itself.
Important Methods: compare(T, T)
This interface can be used to determine, given two objects of the given type, which one is “greater” than the other. It is also used by collections such as an ArrayList
to sort its contents with the sort()
method.
For more on the differences between Comparator and Comparable, see this article .
Iterable<T>
Purpose: Enables iteration over a collection of objects using a for-each loop
Important Methods: iterator()
This interface is implemented by the ArrayList<T>
class, which we’ve been using throughout this course.
|
|
List<E>
Purpose: Enables access to objects in a collection by index. In other words, it enables ordered collections.
Important Methods: add(int, T)
, get(int)
, indexOf(T)
This interface is also implemented by the ArrayList<T>
class, which we’ve been using throughout this course. In fact, List<T>
extends Iterable<T>
. An interface may extend another interface, in the same way that classes may extend each other.
|
|
Map<K,V>
Purpose: Represents a collection of key/value pairs.
Important Methods: get(K)
, containsKey(K)
, put(K, V)
Map Documentation
This interface is implemented by the
HashMap<K, V>` class, which we’ve been using throughout this course.
|
|
Check Your Understanding
True/False: An interface can extend another interface.