# Using TreeMap to sort User-defined Objects in Java

Last Updated : 11 Dec, 2018

Given example shows how to sort user defined objects TreeMap, you can sort the keys based on the logic provided inside the method.
Given a record of employees name and salary as positive integer, it is required to sort the records on the basis of employee salary, using TreeMap in Java. If salary is same, then use employee name for comparison.

Examples:

```Input : xbnnskd 100 geek 50
Output : geek 50 xbnnskd 100

Input : shyam 50 ram 50
Output : ram 50 shyam 50
Explanation :
As both the employees have equal pay,
sorting is done on the basis of employee's name.
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Approach:

```1. Traverse through the string
and map the employee's salary(S)
with the list of employee names having salary S.
2. Use a TreeMap to have
keys(Employee's Salary) in a sorted manner.
3. Now, Traverse through the map
and print the sorted records.
```

Below is the implementation of above approach:

 `// Java program to print employees ` `// records in a sorted manner ` ` `  `import` `java.io.*; ` `import` `java.util.*; ` ` `  `public` `class` `GFG { ` ` `  `    ``// Function to sort the records ` `    ``static` `void` `sortRecords(String records) ` `    ``{ ` ` `  `        ``// split the string ` `        ``// on the basis of delimiter space(" ") ` `        ``String[] rec = records.split(``" "``); ` ` `  `        ``// Create a Treemap to store ` `        ``// employee's salary with employee's name ` `        ``Map > map = ``new` `TreeMap<>(); ` ` `  `        ``// Traverse the records array ` `        ``// and store values in map ` `        ``for` `(``int` `i = ``1``; i < rec.length; i += ``2``) { ` ` `  `            ``// Converting String to integer ` `            ``int` `sal = Integer.parseInt(rec[i]); ` ` `  `            ``String name = rec[i - ``1``]; ` ` `  `            ``if` `(map.containsKey(sal)) { ` ` `  `                ``ArrayList al = map.get(sal); ` `                ``al.add(name); ` ` `  `                ``// Sorting list of employees having Salary sal ` `                ``Collections.sort(al); ` `                ``map.remove(sal); ` `                ``map.put(sal, al); ` `            ``} ` `            ``else` `{ ` `                ``ArrayList al = ``new` `ArrayList<>(); ` `                ``al.add(name); ` `                ``map.put(sal, al); ` `            ``} ` `        ``} ` ` `  `        ``// Traversing the map ` `        ``// to print the sorted records ` `        ``for` `(Map.Entry > ` `                 ``entry : map.entrySet()) { ` ` `  `            ``ArrayList al1 = entry.getValue(); ` ` `  `            ``for` `(``int` `i = ``0``; i < al1.size(); i++) ` `                ``System.out.print(al1.get(i) + ``" "` `                                 ``+ entry.getKey() + ``" "``); ` `        ``} ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `       ``String records = ``"Harsh 100 Neha 100 Neha 20 Samay 600 Karan 50"``; ` `        ``// Calling function to sort the records ` `        ``sortRecords(records); ` `    ``} ` `} `

Output:

```Neha 20 Karan 50 Harsh 100 Neha 100 Samay 600
```