黑马程序员技术交流社区

标题: TreeMap的二叉树,怎么按编号添加和有序打印 [打印本页]

作者: 黑马-小龙    时间: 2013-1-25 22:14
标题: TreeMap的二叉树,怎么按编号添加和有序打印
本帖最后由 张向辉 于 2013-1-27 10:29 编辑

class Student {
String id;
String name;
public Student(String id, String name) {
  super();
  this.id = id;
  this.name = name;
}
}
public class ThreadDemo3 {
/**
  * @param args
  */
public static void main(String[] args) {
  TreeMap tm = new TreeMap();
  Student st1 = new Student("001", "Jack");
  Student st2 = new Student("002", "Rose");
  Student st3 = new Student("003", "Tom");
XXX.put(st1)//此处怎么将以上的三个对象穿进去
  Set<Map.Entry> entryset = tm.entrySet();
  Iterator it = entryset.iterator();
  while (it.hasNext()) {
   Map.Entry entry = (Entry) (it.next());
   Object key = entry.getKey();
   Object value = entry.getValue();
   System.out.println(key + " " + value);
  }
}
}
求大神指教啊,这么将对象以编号的形式传进去,并且打印的也是有顺序?

作者: 王少雷    时间: 2013-1-25 22:23
果断用泛型控制。。。
TreeMap<Integer,Strudent> ??? = new TreeMap<Integer,Student>();
作者: 梁俊    时间: 2013-1-25 22:42
不知道这样合不合你的意思

  1. import java.util.Iterator;
  2. import java.util.Map;
  3. import java.util.Map.Entry;
  4. import java.util.Set;
  5. import java.util.TreeMap;

  6. class Student {
  7. String id;
  8. String name;
  9. public Student(String id, String name) {
  10.   super();
  11.   this.id = id;
  12.   this.name = name;
  13. }
  14. @Override
  15. public String toString(){
  16.         return name;
  17. }
  18. }
  19. public class ThreadDemo3 {
  20. /**
  21.   * @param args
  22.   */
  23. public static void main(String[] args) {
  24.   TreeMap<String,Student> tm = new TreeMap<String,Student>();
  25.   Student st1 = new Student("001", "Jack");
  26.   Student st2 = new Student("002", "Rose");
  27.   Student st3 = new Student("003", "Tom");
  28.   tm.put(st1.id, st1);//把对象编号当作键传入,学生对象当作值传入
  29.   tm.put(st2.id, st2);
  30.   tm.put(st3.id, st3);
  31. //此处怎么将以上的三个对象穿进去
  32.   Set<Map.Entry<String, Student>> entryset = tm.entrySet();
  33.   Iterator<Entry<String, Student>> it = entryset.iterator();
  34.   while (it.hasNext()) {
  35.    Map.Entry<String,Student> entry = (Entry<String,Student>) (it.next());
  36.    Object key = entry.getKey();
  37.    Object value = entry.getValue();
  38.    System.out.println(key + " " + value);//重写学生类toString方法
  39.   }
  40. }
  41. }

复制代码
输出结果是
001 Jack
002 Rose
003 Tom

作者: 黑马-小龙    时间: 2013-1-25 22:46
哇,谢谢哦,不过貌似不对哦,编译错误呢
作者: 黄锦成    时间: 2013-1-25 23:04
这个可以用数字或字母来当做key。再构建TreeMap时,传入一个比较器,是按照key排序的
作者: 胥文    时间: 2013-1-26 00:05
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;



public class TreeMapDemo {

        /**
         * @param args
         */
        public static void main(String[] args) {
                TreeMap tm = new TreeMap();
                tm.put("001", "jack");//API中的put方法添加的键值对,个人觉得没有必要new学生对象,如果你实在想那么做,就在学生对象中定义一个getId()
                                                               //getName()方法然后获取ID和名字以键值对的形式存入       
                                tm.put("002", "rose");
                tm.put("003", "tom");
                Set<Map.Entry<String,String>> entrySet= tm.entrySet();
                Iterator<Map.Entry<String,String>> it =  entrySet.iterator();
                while(it.hasNext())
                {
                        Map.Entry<String,String> entry = it.next();
                        String key = entry.getKey();
                        String value = entry.getValue();
                        System.out.println(key+value);
                }
               



        }

}
这应该是你想要的把




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