8.4. 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.
8.4.1. 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)
8.4.2. 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.
Note
For more on the differences between Comparator
and Comparable
,
see this
article.
8.4.3. 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.
Example
1 2 3 4 5 6 7 | Iterable<String> collection = new ArrayList<>();
// Add items to the collection
for (String item : collection) {
// do something with each item
}
|
8.4.4. 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.
Example
1 2 3 4 5 6 | List<String> collection = new ArrayList<>();
// Add items to the collection
// Get the first item
String firstItem = collection.get(0);
|
8.4.5. Map<K, V>¶
Purpose: Represents a collection of key/value pairs.
Important Methods: get(K)
, containsKey(K)
, put(K, V)
This interface is implemented by the HashMap<K, V>
class, which
we’ve been using throughout this course.
Example
1 2 3 4 5 6 | Map<String, String> collection = new HashMap<>();
// Add items to the collection
// Get item with key "hello"
String hello = collection.get("hello");
|
8.4.6. Check Your Understanding¶
Question
True or False
An interface can extend another interface.