📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Important Key Points about TreeMap
Ordering:
Null Keys and Values:
Non-synchronized:
Comparator Interface:
Performance:
Fail-Fast Iterator:
Implements NavigableMap:
Java 8 Enhancements:
Use-cases:
Create TreeMap
// Creating a TreeMap TreeMap<String, String> fileExtensions = new TreeMap<>();
// Creating a TreeMap
TreeMap<String, String> fileExtensions = new TreeMap<>();
// Adding new key-value pairs to a TreeMap
fileExtensions.put("python", ".py");
fileExtensions.put("c++", ".cpp");
fileExtensions.put("kotlin", ".kt");
fileExtensions.put("golang", ".go");
fileExtensions.put("java", ".java");
// Printing the TreeMap (Output will be sorted based on keys)
System.out.println(fileExtensions);
{c++=.cpp, golang=.go, java=.java, kotlin=.kt, python=.py}
TreeMap Sorting Order Example(Ascending Order)
public class MapInterfaceTreeSetImpl {
public static void main(String[] args) {
treeMapDemo();
}
// maintain keys in ascending order.
private static void treeMapDemo() {
// Constructs a new, empty tree map, using the natural ordering of its
// keys
Map<String, String> treeMap = new TreeMap<>();
treeMap.put("key1", "value1");
treeMap.put("key3", "value3");
treeMap.put("key2", "value2");
treeMap.put("key0", "value0");
// loop linkedHahMap using java 8 forEach method
treeMap.forEach((k, v) -> {
System.out.println(k);
System.out.println(v);
});
// loop linkedHahMap using before java 8 forEach method
for (Entry pair : treeMap.entrySet()) {
System.out.println(pair.getKey());
System.out.println(pair.getValue());
}
}
}
key0
value0
key1
value1
key2
value2
key3
value3
TreeMap with a custom Comparator (Descending Order)
// Creating a TreeMap with a Custom comparator (Descending order)
SortedMap<String, Integer> numberWordMapping = new TreeMap<>(Comparator.reverseOrder());
// Adding new key-value pairs to a TreeMap
numberWordMapping.put("one", 1);
numberWordMapping.put("two", 2);
numberWordMapping.put("three", 3);
numberWordMapping.put("five", 5);
numberWordMapping.put("four", 4);
// Printing the TreeMap (The keys will be sorted based on the supplied
// comparator)
System.out.println(numberWordMapping);
{two=2, three=3, one=1, four=4, five=5}
Accessing the entries of a TreeMap
TreeMap<Integer, String> users = new TreeMap<>();
users.put(1, "Ramesh");
// Finding the size of a TreeMap
System.out.println("Total number of users: " + users.size());
TreeMap<Integer, String> users = new TreeMap<>();
users.put(1003, "A");
users.put(1001, "B");
users.put(1002, "C");
users.put(1004, "D");
// Check if a given key exists in a TreeMap
Integer id = 1004;
if(users.containsKey(id)) {
// Get the value associated with a given key in a TreeMap
String name = users.get(id);
System.out.println("user with id " + id + " : " + name);
} else {
System.out.println("user does not exist with id : " + id);
}
TreeMap<Integer, String> users = new TreeMap<>();
users.put(1003, "A");
users.put(1001, "B");
users.put(1002, "C");
users.put(1004, "D");
// Find the first entry
System.out.println("First entry in users map : " + users.firstEntry());
TreeMap<Integer, String> users = new TreeMap<>();
users.put(1003, "A");
users.put(1001, "B");
users.put(1002, "C");
users.put(1004, "D");
// Find the last entry
System.out.println("Last entry in users map : " + users.lastEntry());
TreeMap<Integer, String> users = new TreeMap<>();
users.put(1003, "A");
users.put(1001, "B");
users.put(1002, "C");
users.put(1004, "D");
// Find the entry whose key is just less than the given key
Map.Entry<Integer, String> users = users.lowerEntry(1002);
TreeMap<Integer, String> users = new TreeMap<>();
users.put(1003, "A");
users.put(1001, "B");
users.put(1002, "C");
users.put(1004, "D");
// Find the entry whose key is just higher than the given key
Map.Entry<Integer, String> usersEx = users.higherEntry(1002);
Removing Elements from TreeMap
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
// Create a TreeMap
TreeMap<Integer, String> treeMap = new TreeMap<>();
// Add key-value pairs to the TreeMap
treeMap.put(3, "Three");
treeMap.put(2, "Two");
treeMap.put(1, "One");
System.out.println("Original TreeMap: " + treeMap);
// Remove the entry with key 2
treeMap.remove(2);
System.out.println("TreeMap after removing entry: " + treeMap);
}
}
Output:
Original TreeMap: {1=One, 2=Two, 3=Three}
TreeMap after removing entry: {1=One, 3=Three}
Searching Elements in TreeMap
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
// Create a TreeMap
TreeMap<Integer, String> treeMap = new TreeMap<>();
// Add key-value pairs to the TreeMap
treeMap.put(3, "Three");
treeMap.put(2, "Two");
treeMap.put(1, "One");
// Search for a key in the TreeMap
boolean hasKey = treeMap.containsKey(2);
System.out.println("TreeMap contains key 2: " + hasKey);
// Search for a value in the TreeMap
boolean hasValue = treeMap.containsValue("Four");
System.out.println("TreeMap contains value 'Four': " + hasValue);
}
}
Output:
TreeMap contains key 2: true
TreeMap contains value 'Four': false
Iterate over TreeMap
Using the for-each loop and the entrySet method:
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "Three");
treeMap.put(2, "Two");
treeMap.put(1, "One");
for (Map.Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}
Output:
1 => One
2 => Two
3 => Three
Using an Iterator:
import java.util.*;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "Three");
treeMap.put(2, "Two");
treeMap.put(1, "One");
Iterator<Map.Entry<Integer, String>> iterator = treeMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}
Output:
1 => One
2 => Two
3 => Three
Using Java 8's forEach:
import java.util.*;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "Three");
treeMap.put(2, "Two");
treeMap.put(1, "One");
Stream<Map.Entry<Integer, String>> stream = treeMap.entrySet().stream();
stream.forEach(entry -> System.out.println(entry.getKey() + " => " + entry.getValue()));
}
}
Output:
1 => One
2 => Two
3 => Three
Using Java 8's Stream API:
import java.util.*;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "Three");
treeMap.put(2, "Two");
treeMap.put(1, "One");
Stream<Map.Entry<Integer, String>> stream = treeMap.entrySet().stream();
stream.forEach(entry -> System.out.println(entry.getKey() + " => " + entry.getValue()));
}
}
Output:
1 => One
2 => Two
3 => Three
Comments
Post a Comment
Leave Comment