TreeSet and TreeMap
TreeMap
Initialize
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(10, "ten");
treeMap.put(4, "four");
treeMap.put(1, "one");
treeSet.put(12, "twelve");
System.out.println(treeMap.firstEntry());
// Prints 1=one
System.out.println(treeMap.lastEntry());
// Prints 12=twelve
System.out.println(treeMap.size());
// Prints 4, since there are 4 elemens in the map
System.out.println(treeMap.get(12));
// Prints twelve
System.out.println(treeMap.get(15));
// Prints null, since the key is not found in the map
Iteration
for (Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.print(entry + " "); //prints 1=one 4=four 10=ten 12=twelve
}
Iterator<Entry<Integer, String>> iter = treeMap.entrySet().iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); //prints 1=one 4=four 10=ten 12=twelve
}
TreeSet
Initialization
System.out.println(treeSet.first());
// Prints 1
System.out.println(treeSet.last());
// Prints 12
System.out.println(treeSet.size());
// Prints 4, since there are 4 elemens in the set
System.out.println(treeSet.contains(12));
// Prints true
System.out.println(treeSet.contains(15));
// Prints false
Iteration
for (Integer i : treeSet) {
System.out.print(i + " "); //prints 1 4 10 12
}
Iterator<Integer> iter = treeSet.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); //prints 1 4 10 12
}
TreeMap/TreeSet of a custom Java type
Since TreeMap
and TreeSet
s maintain keys/elements according to their natural ordering. Therefor TreeMap
keys and TreeSet
elements have to comparable to one another. you will run into the following error
Exception in thread "main" java.lang.ClassCastException: Person cannot be cast to
java.lang.Comparable
- One solution is to modify Object so it would implement the Comparable interface.
- Another solution is to provide the
TreeSet
with aComparator