黑马程序员技术交流社区

标题: TreeMap问题 [打印本页]

作者: 雀巢咖啡    时间: 2014-5-26 15:02
标题: TreeMap问题
代码如下:
  1. package Map1;
  2. import java.util.*;
  3. class Student_1 implements Comparable<Student_1>
  4. {
  5.         private String name;
  6.         private int age;
  7.         Student_1(String name,int age)
  8.         {
  9.                 this.name=name;
  10.                 this.age=age;
  11.         }
  12.        
  13.         public int compareTo(Student_1 stu)
  14.         {
  15.                 if(!(stu instanceof Student_1))
  16.                         throw new ClassCastException("error!");
  17.                 System.out.println("!!!!");
  18.         int num=new Integer(this.age).compareTo(new Integer(stu.age));
  19.                
  20.                 if(num==0)
  21.                         return this.name.compareTo(stu.name);
  22.                 return num;
  23.         }
  24.         public String getName()
  25.         {
  26.                 return name;
  27.         }
  28.         public int getAge()
  29.         {
  30.                 return age;
  31.         }
  32.        
  33.         public String toString()
  34.         {
  35.                 return name+":"+age;
  36.         }
  37. }
  38. public class TreeMapTest_2 {
  39.         public static void main(String[] args)
  40.         {
  41.                 TreeMap<Student_1,String> ts=new TreeMap<Student_1,String>();
  42.                
  43.                 ts.put(new Student_1("sunyan3",3),"wuhan");
  44.                 ts.put(new Student_1("sunyan2",4),"hunan");
  45.                 ts.put(new Student_1("sunyan3",1),"wuhan");
  46.                
  47.                 //第一种取出方式:keySet
  48.                 /*Set<Student_1> s=ts.keySet();
  49.                 Iterator<Student_1> it=s.iterator();
  50.                 while(it.hasNext())
  51.                 {
  52.                         Student_1 s1=it.next();
  53.                         String addr=ts.get(s1);
  54.                         System.out.println(s1+":"+addr);
  55.                 }*/
  56.                
  57.                 //第二种取出方式:entrySet
  58.                 Set<Map.Entry<Student_1,String>> entry=ts.entrySet();
  59.                 Iterator<Map.Entry<Student_1,String>> it=entry.iterator();
  60.                
  61.                 while(it.hasNext())
  62.                 {
  63.                         Map.Entry<Student_1,String> s=it.next();
  64.                         Student_1 key=s.getKey();
  65.                         String Value=s.getValue();
  66.                         System.out.println(key+":"+Value);
  67.                 }
  68.         }
  69.        
  70. }
复制代码

问题:将TreeMap<Student_1,String>改为TreeMap<String,Student_1>后,在往其中存入:
      ts.put("wuhan",new Student_1("sunyan3",3));
      ts.put("hunan",new Student_1("sunyan2",4));
      ts.put("wuhan",new Student_1("sunyan3",1));
结果显示的是:wuhan:sunyan3,1  hunan:sunyan2,4;
为什么显示的不是:wuhan:sunyan3:1  suhan:sunyan3:3 hunan:sunyan2:4
作者: 成小龙    时间: 2014-5-26 15:54
你的意思是键和值换下的意思?   wuhua重复了,不能存重复元素,TreeMap看键




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2