Skip to content

Instantly share code, notes, and snippets.

@codinko
Created December 18, 2015 04:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codinko/cc03a5f2a6c39f915e8c to your computer and use it in GitHub Desktop.
Save codinko/cc03a5f2a6c39f915e8c to your computer and use it in GitHub Desktop.
TreeMap vs HashMap
package com.codinko.sample;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.TreeMap;
public class CompareTreeMapHashMap {
public static void main(String[] args) {
Employee emp1 = new Employee("Harley", 100);
Employee emp2 = new Employee("Peter", 100);
Employee emp3 = new Employee("John", 200);
Employee emp4 = new Employee("Harley", 200);
// mapping employee and number of badges
TreeMap<Employee, Integer> treeMap = new TreeMap<Employee, Integer>();
treeMap.put(emp1, 1);
treeMap.put(emp2, 2);
treeMap.put(emp3, 3);
treeMap.put(emp4, 4);
HashMap<Employee, Integer> hashMap = new HashMap<Employee, Integer>();
hashMap.put(emp1, 1);
hashMap.put(emp2, 2);
hashMap.put(emp3, 3);
hashMap.put(emp4, 4);
System.out.println("TreeMap auto Sorts by the batchNumber of the Employee (key of map)");
System.out.println("TreeMap uses compareTo() method to compare keys!!");
System.out
.println("--------------------------------------------------------");
for (Entry<Employee, Integer> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " has " + entry.getValue()
+ " badges ");
}
System.out.println("*********************************************************");
System.out.println("*********************************************************");
System.out.println("HashMap is driven by implementation of hashcode and equals method");
System.out.println("--------------------------------------------------------");
for (Entry<Employee, Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey() + " has " + entry.getValue()
+ " badges ");
}
}
}
class Employee implements Comparable<Employee> {
String name;
int batchNumber;
@Override
public String toString() {
return "Employee [name=" + name + ", batchNumber=" + batchNumber + "]";
}
Employee(String name, int batchNumber) {
this.name = name;
this.batchNumber = batchNumber;
}
@Override
public int compareTo(Employee employee) {
return this.batchNumber - employee.batchNumber;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Employee other = (Employee) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
/*
Output:
TreeMap auto Sorts by the batchNumber of the Employee (key of map)
TreeMap uses compareTo() method to compare keys!!
--------------------------------------------------------
Employee [name=Harley, batchNumber=100] has 2 badges
Employee [name=John, batchNumber=200] has 4 badges
*********************************************************
*********************************************************
HashMap is driven by implementation of hashcode and equals method
--------------------------------------------------------
Employee [name=Harley, batchNumber=100] has 4 badges
Employee [name=Peter, batchNumber=100] has 2 badges
Employee [name=John, batchNumber=200] has 3 badges
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment