黑马程序员技术交流社区

标题: 感觉TreeSet的二叉树特性根本感觉不出来啊 [打印本页]

作者: 官仁杰    时间: 2012-10-20 17:40
标题: 感觉TreeSet的二叉树特性根本感觉不出来啊
本帖最后由 官仁杰 于 2012-10-21 00:27 编辑

感觉只是一个实现了顺序的set
二叉树不是有子节点,先序遍历,后序遍历啥的
作者: 给生活加点料    时间: 2012-10-20 18:30
TreeSet  虽然打印顺序和存入顺序不一致。 当时他本事是会有自己默认的排序方式的。
作者: sun~~    时间: 2012-10-20 19:42
TreeSet:可以对Set集合中的元素进行排序。
    底层数据结构是二叉树。
    保证元素唯一性的依据:
    compareTo方法return 0.

    TreeSet排序的第一种方式:让元素自身具备比较性。
    元素需要实现Comparable接口,覆盖compareTo方法。
    也种方式也成为元素的自然顺序,或者叫做默认顺序。

    TreeSet的第二种排序方式。
    当元素自身不具备比较性时,或者具备的比较性不是所需要的。
    这时就需要让集合自身具备比较性。
    在集合初始化时,就有了比较方式。
作者: 汪小照    时间: 2012-10-20 22:40
TreeSet排序是采用的是中序排序,慢慢体会其底层数据结构你就会感觉到它的特性所在了。
作者: 唐进    时间: 2012-10-21 00:58
什么都不说了直接上代码
TreeSet<user> sortset = new TreeSet<test2.user>(new Comparator<user>() {
                        @Override
                        public int compare(user o1, user o2) {
                                if (o1.value < o2.value) {
                                        return -1;
                                } else if (o1.value > o2.value) {
                                        return 1;
                                } else {
                                        return o1.name.compareTo(o2.name);
                                }
                        }
                });
                Iterator iterator = map.keySet().iterator();
                while (iterator.hasNext()) {
                        String key = (String) iterator.next();
                        int value = (Integer) map.get(key);
                        user u = new user(key, value);
                        sortset.add(u);
                }





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