Monday, October 25, 2021

How to use TreeMap in Java? Example Tutorial

Hello friends, I hope you all are doing well and having lots of fun reading and learning together. Today we are here a meet again on our journey of Java. I hope you all have seatbelts buckled up as today it's gonna be an adventurous ride while learning something that is most used in many production applications, coding, and whatnot. Today's topic, TreeMap in Java is very important because it holds a very significant feature Java development kit provides. 

TreeMap is a special class that allows you to store key-value pairs in sorted order by keys. This means you can store numeric keys in increasing or decreasing order as well as string keys in alphabetic or alphanumeric order.  

This is also key to process elements in order, for example, you may want to process orders coming into exchange based upon their time and price priority. So, what's the wait? Let's start!

As usual, let's start with a scenario (yeah, I will never stop with scenarios :p). I suppose you guys are familiar with HashMap. Because today's topic is solely dependent on your knowledge of HashMap. 

You guys can have a look at the HashMap article, which we previously covered. We will still give a gist of that here in a paragraph so that you guys can recall it.





1. HashMap

The Java HashMap implementation of the Map interface is based on hash tables. A Map is a set of key-value pairs, as you may know. It converts keys into values.
  • There can't be any duplicate keys in a HashMap.
  • Null values and the null key are allowed in Java HashMap.
  • HashMap is a collection that is not in any particular order. It does not ensure that the elements will be in any particular sequence.
  • HashMap in Java is not thread-safe. You must explicitly synchronize concurrent HashMap changes.

HashMap is declared as:

Map<String, Integer> map = new HashMap<>();

Now, after you guys know what HashMap is and How HashMapw works, let's jump into today's topic with a scenario.

Let's say we have a HashMap with us. The HashMap has a String key type, and the value type is Integer. Let's say we have unique car names as key, and value is the max speed limit of the cars.

So, the HashMap would look like this:

 Map<String,Integer> carMap = new HashMap<>();   

The values inside the map would be similar to this: {'BMW m3' - 360, 'Audi a6 - 340', 'Mercedes q3 - 320', 'Bugatti Veyron - 420'}. This represents the {'key' - value} notation. Each key is linked to its value. 

Now, let's say we have a requirement such as a user is presented with a list of cars and their top speed, and the user wants to sort the list according to car names. What will you do in this case?

Think for 2 minutes, and then we will discuss the possible solutions. (There are multiple solutions to this problem, but we will focus on one that the article is about.)

One way is to get a copy of all the keys into a list and then sort the list. This way, we can get the keys sorted in the natural order and get the value from the hashmap in O(1) time. Pretty cool, right? Wait till you use a more cool feature of Java. Let me introduce you to something incredible!




2. TreeMap

Along with the AbstractMap Class, Java's TreeMap is utilized to implement the Map interface and NavigableMap. Depending on whether function Object() { [native code] } is used, the map is sorted either by the natural ordering of its keys or by a Comparator given at map construction time. 

This is a time-saving method of sorting and storing key-value pairs. Regardless of the specified comparators, the Treemap's storage order must be consistent with equals, just like any other sorted map. 

The Treemap implementation is not synchronized in the sense that a map must be synchronized exte if it is used by several threads concurrently, and at least one of the threads alters the map structurally.

Let's see a working code of TreeMap and how it sorts the keys in its natural order.



Code:


import java.util.Map;
import java.util.TreeMap;

public class MyMap {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
map.put("BMW M3", 360);
map.put("Audi A6", 340);
map.put("Mercedes Q3", 320);
map.put("Buggati Veyron", 420);

map.forEach((key, value) -> System.out.println(key + " --> " + value));

}
}


Output:


How to use TreeMap in Java? Example Tutorial



Now, as you all can observe the output, sort the keys in the natural order. Now, before using it, let's see some of the essential points of TreeMap.




3. TreeMap Properties 

Here are some essential points about TreeMap which every Java programmer should remember:
  • The key determines the values in a Java TreeMap. 
  • It extends the AbstractMap class and implements the NavigableMap interface.
  • Only unique items are found in the Java TreeMap.
  • There can't be a null key in a Java TreeMap, but many null values may be.
  • TreeMap in Java is not synchronized.
  • Ascending order is maintained via Java TreeMap.  

Also, the declaration of how Java does for Treemap is something like this: 

public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable 

The parameters in this declaration are as follows: 

  • K: It is the type of keys maintained by this map.
  • V: It is the type of mapped values.

Here is also the type hierarchy of TreeMap in Java, you can see that its both SortedMap as well as NavigableMap

How to use TreeMap in Java? Example Tutorial


That's all about how to use TreeMap in Java. It's an important class because it allows you to keep key-value mapping in order. Particularly keys are stored in order and follow the order specified by Comparator or natural order defined by Comparable. 

TreeMap is also a NavigableMap which means you can get the lowest and highest entries and get entries in a range. All these properties make TreeMap an instrumental class for Java application development. 

Hope you guys are now in absolute love with TreeMap. Please also try to perform some Hand-on and get a go with TreeMap.

Other Java HashMap tutorials  you may like
  • How does the get() method of HashMap work in Java? (answer)
  • Difference between HashMap and Hashtable in Java? (answer)
  • Difference between ConcurrentHashMap and HashMap in Java? (answer)
  • How HashSet internally works in Java? (answer)
  • How ConcurrentHashMap internally works in Java? (answer)
  • Difference between HashSet and HashMap in Java? (answer)
  • Difference between HashMap and LinkedHashMap in Java? (answer)
  • The best way to iterate over HashMap in Java? (answer)
  • Difference between ArrayList and HashMap in Java? (answer)
  • How to sort the HashMap on keys and values in Java? (solution)
  • 3 ways to loop over a Map in Java? (example)
  • The difference between HashMap and ConcurrentHashMap in Java? (answer)
  • What is the difference between ArrayList and HashMap? (difference)
  • How to convert Map to List in Java? (solution)

Thanks for reading this article so far. If you like this TreeMap tutorial and Example then please share with your friends and colleages. If you have any questions or feedback, please ask in comments. 

P. S. - If you are new to Java and want to learn Java in depth, you can also checkout these 10 Free Core Java Courses to staart with. It contains best free Java courses from Udemy and Coursera for beginners. 


No comments:

Post a Comment

Feel free to comment, ask questions if you have any doubt.