
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java编程开发是目前大多数人转行互联网行业都会去接触和学习的一种编程开发语言,而本文我们就简单来了解一下,Java编程TreeMap底层基础知识分享。
底层结构对比
先来看一下与HashMap、LinkedHashMap的对比,同时就当是复习一下:
HashMap使用数组存储数据,并使用单向链表结构存储hash冲突数据,同一个冲突桶中数据量大的时候(默认超过8)则使用红黑树存储冲突数据。
LinkedHashMap使用数组+双向链表存储数据,冲突数据存储方式同HashMap。
TreeMap使用红黑树存储数据,注意是直接使用红黑树,不使用table数组。
关于排序特性
HashMap无顺序,不能保持顺序。
LinkedHashMap能保持写入的顺序,遍历的时候可以按照写入顺序获取数据。
TreeMap是有序的Map,自动按照key值排序存储,遍历时获取到的是有序数据。
需要注意LinkedHashMap和TreeMap在顺序方面的区别,LinkedHashMap只能保持写入顺序,从“排序”的角度讲,他实际是无序的。
只有TreeMap是可以实现自动排序的。
TreeMap按照什么排序?
TreeMap底层支持两种排序方式:
TreeMap对象实例化时传入comparator对象。
key值对象实现Comparable接口。
如果以上两点都不能满足的话,向TreeMap对象put数据的时候会抛出运行时异常。
比如TreeMap
但是如果自定义的对象,没有实现Comparable接口,同时在TreeMap实例化的时候没有设置comparator对象,则该TreeMap对象实际是不可用的。
TreeMap是否可以存储null?
指的是,是否可以存储key为空的数据?我们知道HashMap是可以支持一个null对象的。
很多人都说不可以,但是我觉得有条件可以,虽然还没有测试。
条件是实例化TreeMap对象的时候指定comparator对象,同时,该comparator对象的compare方法可以支持null。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。