class MyComparator implements Comparator<Student>
{
public int compare(Student s1,Student s2)
{
System.out.println(s1.getName()+"与"+s2.getName()+"比较:");
int num = s1.getName().compareTo(s2.getName());
if(num==0)
{
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
}
return num;
}
}
public class MapTest2
{
public static void main(String args[])
{
TreeMap<Student,String> tm = new TreeMap<Student,String>(new MyComparator());
tm.put(new Student("张三",23),"北京");
tm.put(new Student("钱七",20),"天津");
tm.put(new Student("钱七",25),"天津");
tm.put(new Student("李四",21),"上海");
tm.put(new Student("阿里",25),"深圳");
tm.put(new Student("丁一",25),"深圳");
tm.put(new Student("张三",23),"北京");
Set<Map.Entry<Student,String>> entrymap= tm.entrySet();
Iterator<Map.Entry<Student,String>> it = entrymap.iterator();
while(it.hasNext())
{
Map.Entry<Student,String> me = it.next();
Student stu = me.getKey();
String address = me.getValue();
sop(stu+"--->"+address);
}
}
public static void sop(Object o)
{
System.out.println(o);
}
}
程序运行的结果是:
钱七与张三比较:
钱七与张三比较:
钱七与钱七比较:
李四与钱七比较:
李四与张三比较:
阿里与钱七比较:
阿里与钱七比较:
丁一与钱七比较:
丁一与张三比较:
张三与钱七比较:
张三与张三比较:
丁一 25--->深圳
张三 23--->北京
李四 21--->上海
钱七 20--->天津
钱七 25--->天津
阿里 25--->深圳
我的问题是:
为什么向TreeMap中添加数据时,不是跟每一个已经存在的数据进行比较,比如存入阿里,为什么阿里只跟钱七比较了,而没跟张三比较?这里面有什么规律吗? |