A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三眼皮 中级黑马   /  2014-3-4 00:13  /  956 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class TreeSetDemo
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi02",22));
                ts.add(new Student("lisi007",20));
                ts.add(new Student("lisi09",19));
                ts.add(new Student("lisi08",19));
                //ts.add(new Student("lisi007",20));
                //ts.add(new Student("lisi01",40));

                Iterator it = ts.iterator();
                while(it.hasNext())
                {
                        Student stu = (Student)it.next();
                        System.out.println(stu.getName()+"..."+stu.getAge());
                }
        }
}


class Student implements Comparable//该接口强制让学生具备比较性。
{
        private String name;
        private int age;

        Student(String name,int age)
        {
                this.name = name;
                this.age = age;
        }

        public int compareTo(Object obj)
        {

                //return 0;
               
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生对象");
                Student s = (Student)obj;

                System.out.println(this.name+"....compareto....."+s.name);
                if(this.age>s.age)
                        return 1;
                if(this.age==s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
                /**/
        }

        public String getName()
        {
                return name;

        }
        public int getAge()
        {
                return age;
        }
}像这个TreeSet底层是一颗二叉树,有谁知道本程序是按先序遍历,后续遍历还是中序遍历,能举个例子更好

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

正序浏览
伙计,,,谢了哈
回复 使用道具 举报
我用下面代码说明
  1. import java.util.*;
  2. public class TreeSetDemo {
  3.         public static void main(String[] args) {
  4.                 TreeSet<Integer> treeSet = new TreeSet<Integer>();
  5.                 treeSet.add(5);
  6.                 treeSet.add(9);
  7.                 treeSet.add(8);
  8.                 treeSet.add(4);
  9.                 treeSet.add(7);
  10.                 treeSet.add(2);
  11.                 treeSet.add(3);

  12.                 for (Iterator it = treeSet.iterator(); it.hasNext(); ) {
  13.                         System.out.println(it.next());
  14.                 }
  15.         }
  16. }
复制代码

输入的顺序是 5,9, 8, 4, 7, 2, 3
输出顺序是自然排序的
看我附件的图,很明显它是中序遍历

无标题.png (3.28 KB, 下载次数: 1)

无标题.png

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
TreeSet遍历的时候是从最左边开始的。
如果只是删除元素或添加元素,就是从中间开始。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马