TreeSet

项目中需要按照时间先后排序,想到了TreeSet。TreeSet实际上调用的TreeMap的put方法,排序分成两种:自然排序和自定义排序,区别在于构造方法不一样:

1.自然排序的构造方法:TreeSet()

构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。

要求:TreeSet中装的对象实现comparable接口,比较的是其compareTo方法

2.自定义排序的构造方法:TreeSet(ComparatorE> comparator)

构造一个新的空 TreeSet,它根据指定比较器进行排序。

要求传入一个实现了Comparator接口的子类对象,或者匿名类对象。

Demo:

public classTestTreeSet {

@Test

public voidtest1()throwsParseException {

String s1 ="2017-07-22 08:00:00";

String s2 ="2017-07-23 08:00:00";

String s3 ="2017-07-24 08:00:00";

String s4 ="2017-07-25 08:00:00";

String s5 ="2017-07-26 08:00:00";

TreeSet treeSet =newTreeSet(newComparator() {

public intcompare(Date o1, Date o2) {

returno1.before(o2)?1:-1;//o1 小于 o2  o2放在二叉树右边  注意新添加进来的永远是o1

}

});

treeSet.add(DateUtil.String2Date(s2));//s2相当于红黑树(本质是二叉树)的根节点

treeSet.add(DateUtil.String2Date(s1));//s1 相当于 o1  s2 相当于 o2

treeSet.add(DateUtil.String2Date(s3));

treeSet.add(DateUtil.String2Date(s4));

treeSet.add(DateUtil.String2Date(s5));

//最后的输出是按照树的中序遍历(左中右的顺序)取出

for(Date date: treeSet) {

System.out.println(date.toLocaleString());

}

}

}


public classDateUtil {

/**

*  Date2String 并格式化输出

* 例如:2017-8-9 19:46:47

*@paramdate日期

*@return2017-8-9 19:46:47

*/

public staticString Date2String(Date date){

SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

returnsdf.format(date);

}

/**

* String2Date

*@paramdateString

*@return

*@throwsParseException

*/

public staticDate String2Date(String dateString)throwsParseException {

SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

returnsdf.parse(dateString);

}

}



输出结果:

2017-7-26 8:00:00

2017-7-25 8:00:00

2017-7-24 8:00:00

2017-7-23 8:00:00

2017-7-22 8:00:00


补充:二叉树的遍历的三种方式

前序遍历:中在左边,即中左右的顺序。

中序遍历:中在中间,即左中右的顺序。

后序遍历:中在右边,即左右中的顺序。

例如:

请写出该二叉树的三种遍历结果

先序输出:

A B D G H E C K F I J

中序输出:

G D H B E A K C I J F

后序输出:

G H D E B K J I F C A

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。 自然排序 TreeSet会调...
    暖熊熊阅读 1,889评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,124评论 18 399
  • package cn.itcast.collection; import java.util.Comparator...
    Michael_林阅读 2,076评论 0 1
  • 一 那是一间没有多少人记得的小屋。它夹在我家后院的一个犄角旮旯里。 左边贴着两家共用的一堵墙,墙上蔓草丛生,墙体发...
    英徽阅读 326评论 0 1
  • 今天一直下雨,北京好像很少这样下雨,最起码我印象里不常这样,也或许是因为我太久没在北京生活,尤其是夏天。 晚上我还...
    小王加油啊阅读 261评论 0 0

友情链接更多精彩内容