Created
December 18, 2015 04:45
-
-
Save codinko/cc03a5f2a6c39f915e8c to your computer and use it in GitHub Desktop.
TreeMap vs HashMap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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