You can try some what likewise, to full fill you requirement..
import java.util.*;
import java.util.Map.Entry;
public class TestCollection13{
public static void main(String args[]){
Map<MyComperator, Long> movieReviewsTreeMap = new TreeMap<MyComperator, Long>(new MyComperator());
Long l1 = new Long(5);
movieReviewsTreeMap.put(new MyComperator("a", l1),l1);
Long l2 = new Long(2);
movieReviewsTreeMap.put(new MyComperator("a", l2),l2);
Long l3 = new Long(6);
movieReviewsTreeMap.put(new MyComperator("a", l3),l3);
Long l4 = new Long(0);
movieReviewsTreeMap.put(new MyComperator("a", l4),l4);
for(Entry<MyComperator, Long> entry : movieReviewsTreeMap.entrySet()){
System.out.println("Key : " + entry.getKey().getKey() + " , value :" + entry.getValue());
}
}
}
class MyComperator implements Comparator<MyComperator>{
String key;
Long value;
MyComperator(){
}
MyComperator(String key, Long value){
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Long getValue() {
return value;
}
public void setValue(Long value) {
this.value = value;
}
@Override
public int hashCode() {
return this.key.length();
}
@Override
public boolean equals(Object obj) {
MyComperator mc = (MyComperator)obj;
if(mc.getKey().equals(this.getKey()) && mc.getValue().equals(this.getValue())){
return false;
}
// TODO Auto-generated method stub
return super.equals(obj);
}
@Override
public int compare(MyComperator o1, MyComperator o2) {
if(o1.getKey().equals(o2.getKey())){
return o1.getValue().compareTo(o2.getValue());
}
return 0;
}
}
Answer :
Key : a , value :0
Key : a , value :2
Key : a , value :5
Key : a , value :6